Java UDP сокет неблокирующий? - PullRequest
0 голосов
/ 19 марта 2019

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

...