我在製作UDP客戶端/服務器程序。客戶端收集數據並將其發送到服務器。服務器在一個端口上接受多個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
我需要它保持運行,以接受連接。我究竟做錯了什麼?
感謝您的回答約翰,我拿出while循環,但相同的結果第一個客戶端連接,併發送數據。在第一個客戶端之後沒有其他客戶端可以連接 – Joshua 2012-04-22 20:35:59
發佈更新後的代碼 – 2012-04-22 20:37:52
發佈無while循環的代碼。 – Joshua 2012-04-22 20:47:24