У меня есть сокет 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()
.