У меня есть сокет UDP, и я жду запросов от клиентов. По запросу я читаю строку из файла и отправляю дейтаграмму с этой строкой в качестве полезной нагрузки. Но socket.receive(), кажется, блокируется только для первого запроса (итерация цикла), последующие вызовы socket.receive() больше не блокируются. Это нормально? Почему это могло быть?
String input;
DatagramSocket socket = new DatagramSocket(port);
DatagramPacket answer;
while((input=fileIn.readline()))!=null){
socket.receive(request);
...
//send answer back
byte[] load = input.getBytes();
answer = new DatagramPacket(load, load.length, address, port);
socket.send(answer);
}
socket.close();
Программа уже отправляет все данные файла, то есть все строки файла после 1-го запроса, и поэтому перескакивает через блокировку socket.receive().
localhost и какой-то случайный номер порта, я выбрал одинаковый для клиента и сервера.
Это именно то, что сказал @JamesKPolk - вы получаете свои собственные сообщения.
Спасибо! Вы только что сэкономили мне много времени. Я полностью пропустил это.




Что такое
addressиport? Вероятно, вы отправляете ответ себе, а не коллеге.