为了账号安全,请及时绑定邮箱和手机立即绑定

UDP实现多线程

UDP实现多线程时,发生了错误(while怎么设置停止语句,要不然内存会一直飙升)。谁有编写好的UDP多线程程序?

正在回答

2 回答

package UDPTest;


import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;


/**

 * 服务器端,实现基于UDP的用户登录

 * 

 * @author admin

 * 

 */

public class UDPService {

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


/*

* 接受客户端发送的数据

*/

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

DatagramSocket socket = new DatagramSocket(8800);

System.out.println("---服务器即将启动,等待客户端连接---");

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

// 创建字节数组,用于指定接受的数据包的大小

int count = 0;

while (true) {

byte[] data = new byte[1024];

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

// 接受客户端发送的数据,此方法在接受数据报之前会一直堵塞

socket.receive(packet);

// 创建一个多线程

UDPThread thread = new UDPThread(packet, socket);

// 线程开始

thread.start();

count++;

System.out.println("当前客户端的数量为:" + count);

// 查看连接的客户端的地址

System.out.println("当前客户端的地址为:" + packet.getAddress());

}

}

}


1 回复 有任何疑惑可以回复我~

package com.imooc;


import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;


public class UDPServerThread extends Thread{

DatagramPacket packet;

DatagramSocket socket;

public UDPServerThread(DatagramPacket packet, DatagramSocket socket) {

super();

this.packet = packet;

this.socket = socket;

}

public void run(){

//读取数据

byte[] data=packet.getData();

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

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

/*

* 与客户端响应

*/

InetAddress address=packet.getAddress();

int port =packet.getPort();

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

//创建数据报

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

try {

socket.send(packet2);

} catch (IOException e) {

e.printStackTrace();

}

}

}


1 回复 有任何疑惑可以回复我~
#1

小波66 提问者

其他端的 代码有吗?
2016-10-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

UDP实现多线程

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信