Я делаю программу клиента/сервера 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
Опубликовать обновленный код –
Отправленный код без петель. – Joshua