udpservertest.java

来自「《Java程序设计与应用》-张仕斌-源程序 《Java程序设计与应用》-张仕斌」· Java 代码 · 共 55 行

JAVA
55
字号
//UDPServerTest.java
import java.io.*;
import java.net.*;

public class UDPServerTest {
	public static void main(String[]args) {
		DatagramSocket svrSocket = null;  //服务器端UDP
		DatagramPacket svrPacket = null;  //收到和发送数据报
		InetAddress rmtHost = null;       //远程主机
		int localPORT = 6789;             //本地端口
		int rmtPort;                      //远程主机端口
		String strData;                   //接收和发送数据
		byte[] buffer = new byte[512];    //以字节数组发送
		
		if (args.length > 0) {     //如果指定服务器监听端口
			try {
				localPORT = Integer.parseInt(args[0]);
			}catch(Exception e) {
				System.out.println("端口必须是数字");
				return;
			}
		}
		
		try {                      //创建服务器端UDP Socket
			svrSocket = new DatagramSocket(localPORT);
			System.out.println("Server listening...");
		}catch(IOException e) {
			e.printStackTrace();
		}
		
		try {
			svrPacket = new DatagramPacket(buffer , 512); //创建数据包对象
			svrSocket.receive(svrPacket);                //接收数据包
			rmtHost = svrPacket.getAddress();            //读取数据包的发送主机
			rmtPort = svrPacket.getPort();               //读取远程主机端口
			strData = new String(svrPacket.getData());   //读取发送数据
			
			System.out.println("收到远程主机[" + 
				rmtHost.getHostName() + "]信息:" + strData);  //显示
			
			strData = new String("Information received!");  //要响应的信息
			for (int i = 0; i < buffer.length ; i++) {      //清空字节数组
				buffer[i] = 0;
			}
			strData.getBytes(0 , strData.length() , buffer , 0); //字符串到字节数组
			svrPacket = new DatagramPacket(buffer , 
				buffer.length , rmtHost , rmtPort);               //创建要发送的数据包对象
			svrSocket.send(svrPacket);                          //发送到客户的响应信息
		}catch(IOException e) {
			e.printStackTrace();
		}
		
		svrSocket.close();     //关闭
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?