UDP多线程中true循环里面的问题
public class UDPServer {
public static void main(String[] args) throws IOException {
// 创建datagramsocket对象
DatagramSocket socket = new DatagramSocket(8800);
System.out.println("服务器端已经启动,等待客户端发送数据");
while (true) {
// 创建数据报
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
// 3.接受客户端的数据
socket.receive(packet);// 处于堵塞状态
new UDPThread(packet).start();
}
}
}byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
为什么这一段代码必须放在true循环里面??
开始我放在外面,但运行后在thread线程中里面一直获取不到packet对象,使用packet.getData()方法无效
System.out.println("run");
//4.读取客户端数据
String info=new String(packet.getData(),0,packet.getLength());
System.out.println("我是服务器,客户端说:"+info);这是run()方法里面,打印run以后就走不动了