【发布时间】:2012-05-03 13:01:48
【问题描述】:
我正在制作一个 UDP 客户端/服务器程序。客户端收集数据并将其发送到服务器。
客户端通过特定的 UDP 端口 6789 向服务器发送带有随机端口号的数据报。然后客户端和服务器使用随机端口共享信息。
我的问题是只有一个客户端可以连接。我觉得这是因为 6789 端口永远不会为下一个客户端重新打开。
这是服务器在 6789 端口接收初始连接的代码。
public class MonitorServer extends Thread{
public static void main(String[] args) {
try{
DatagramSocket connectSocket = new DatagramSocket(6789);
while( true )
{
String portString = "";
int portInt = 0;
byte [] buffer = new byte[100];
System.out.println("portTest 01 " +portInt);
DatagramPacket portPacket = new DatagramPacket(buffer, buffer.length);
connectSocket.receive(portPacket);
portString = new String (portPacket.getData());
connectSocket.disconnect();
connectSocket.close();
System.out.println("portTest 02 " +portString);
portString = portString.replaceAll("[^0-9.,]+","");
portInt = Integer.parseInt(portString);
System.out.println("portTest 03 " +portString);
ClientConnection c = new ClientConnection(portInt);
new Thread(c).start();
System.out.println("portTest 04 " +portString); //<<-- never prints
}
}
catch (Exception e) {}
}
}
这部分代码似乎只运行一次。我添加了 System.outs 进行故障排除,看起来它停止在:
ClientConnection c = new ClientConnection(portInt);
new Thread(c).start();
System.out.println("portTest 04 "); //<-- Never prints
我需要它继续运行以接受连接。我做错了什么?
【问题讨论】:
标签: java multithreading loops udp port