java udp多线程服务器_UDP服务端多线程-----

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:17   2188   0

/线程处理类/

public class UDPServerThread extends Thread {

DatagramSocket socket = null;

DatagramPacket packet = null;

public UDPServerThread(DatagramSocket socket, DatagramPacket packet) {

this.socket = socket;

this.packet = packet;

}

public void run() {

try {

byte[] data = packet.getData();

// 4、读取数据

String info = new String(data, 0, packet.getLength());

System.out.println("我是服务端,客户端说:" + info);

/*

* 向客户端响应数据

*/

// 1、定义客户端的地址、端口号、数据

InetAddress address = packet.getAddress();

int port = packet.getPort();

byte[] data2 = "欢迎您!".getBytes();

// 2、创建数据报,包含响应的数据信息

DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);

socket.send(packet2);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/服务端主函数/

public class UDPServer {

public static void main(String[] args) throws IOException {

/*

* 接收客户端信息

*/

// 1、创建服务器端DatagramSocket,指定端口

DatagramSocket socket = new DatagramSocket(8800);

System.out.println("****服务器端已启动,等待客户端发送数据****");

int count = 0;

while (true) {

// 2、创建数据报,用于接收客户端发送的数据报

byte[] data = new byte[1024];

DatagramPacket packet = new DatagramPacket(data, data.length);

// 3、接收客户端发送的数据(此方法在接受到数据报之前会一直阻塞)

socket.receive(packet);

UDPServerThread serverThread = new UDPServerThread(socket, packet);

serverThread.start();

count++;

System.out.println("目前客户端连接数:"+count);

}

}

}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP