📄 datagramadditionserver.java
字号:
import java.io.*;
import java.net.*;
import java.util.StringTokenizer;
public class DatagramAdditionServer {
private int port;
static final int DEFAULT_PORT =8189; //默认端口号
DatagramAdditionServer(int port){
this.port=port;
} //AdditionServer对象的构造函数将接收到的端口号存储
public void run(){
try{
DatagramSocket ss=new DatagramSocket();//run方法以客户知道的预定端口号上创建数据报套接字
System.out.println("等待连接..");
byte[] buffer=new byte[256];//为第一个数据报请求的到来做准备,服务器为输入的请求分配缓冲区
DatagramPacket inDgp=new DatagramPacket(buffer,buffer.length);//创建DatagramPacket对象
String req,rsp;
//do-while循环开始接受请求和返回响应的服务器循环
do{
ss.receive(inDgp);//接收数据报
InetAddress senderAddress=inDgp.getAddress();//析取并保存发送请求的客户的地址和端口号
int senderport=inDgp.getPort();
req=new String(inDgp.getData(),0,inDgp.getLength());
if(!req.equals("")){ //如果接收到非空的请求字符串,就开始处理请求
rsp="我已收到你的消息!";
System.out.println(rsp);
//确定响应字符串以后,创建输出对象DatagramPacket,然后讲响应和客户地址及端口一起放入其中。
DatagramPacket outDgp=new DatagramPacket(rsp.getBytes(),rsp.length(),
senderAddress,senderport);
ss.send(outDgp);
}
//当接收到包含空字符串的数据报时,服务器循环终止,关闭套接字,服务器结束
}while(!req.equals(""));
ss.close();
}catch(IOException iox){
System.out.println(iox);
iox.printStackTrace();
}
}
public static void main(String[] args) {
int port =DEFAULT_PORT;
DatagramAdditionServer addServe=new DatagramAdditionServer(port);
addServe.run();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -