UDP クライアント/サーバー プログラムを作成しています。クライアントはデータを収集し、サーバーに送信します。
クライアントはランダムなポート番号を持つデータグラムを特定の UDP ポート 6789 でサーバーに送信します。その後、クライアントとサーバーはランダムなポートを使用して情報を共有します。
私が抱えている問題は、1 つのクライアントしか接続できないことです。ポート 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) {}
}
}
コードのこのセクションは 1 回しか実行されないようです。トラブルシューティングに System.outs を追加しましたが、次の場所で停止するようです:
ClientConnection c = new ClientConnection(portInt);
new Thread(c).start();
System.out.println("portTest 04 "); //<-- Never prints
接続を受け入れるために実行し続ける必要があります。私は何を間違っていますか?