datagramadditionserver.java

来自「java实现基于UDP的C/S架构的服务器客户端程序」· Java 代码 · 共 54 行

JAVA
54
字号
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 + =
减小字号Ctrl + -
显示快捷键?