📄 udpservertest.java
字号:
//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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -