Как сделать чтение из блока DatagramSocket только в течение ограниченного времени (тайм-аут)? - PullRequest
1 голос
/ 04 апреля 2011

Я запускаю симуляцию потери передачи сетевых пакетов.Моё серверное приложение иногда не отправляет данные обратно моему клиенту.

В моем клиенте я запускаю пинг до сервера каждые 10 секунд.Тем не менее, в случае, когда мой сервер ничего не отправляет обратно, мой клиент будет ждать только дождаться получения следующего пакета.Как я могу перейти к следующей итерации, если я ничего не получаю от сервера?

//attempt to read from server
    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
    receivePacket.getData();

//client blocks on this line until something is received from server
    clientSocket.receive(receivePacket);
    String receivedFromServer = new String(receivePacket.getData());
    System.out.println("FROM SERVER:" + receivedFromServer);

1 Ответ

4 голосов
/ 04 апреля 2011

Вы хотите установить таймаут :

clientSocket.setSoTimeout(TIMEOUT_IN_MILLISECONDS)

...