Тест TCP Keepalive в Java - PullRequest
       40

Тест TCP Keepalive в Java

0 голосов
/ 06 июня 2018

Я пытаюсь проверить параметры TCP Keepalive в java, KEEPALIVE_IDLE_TIME, KEEPALIVE_PROBE_COUNT, KEEPALIVE_INTERVAL_TIME, которые устанавливаются и контролируются ОС.Эти три могут быть установлены через свойства потока. Но я не могу воспроизвести проблему мертвого соединения или незанятого сокета через отдельную программу (даже после использования thread.sleep).Вот фрагмент кода:

public Server(int port)
   {    
          ThreadProperties.setProperty(ThreadProperties.KEEPALIVE_IDLE_TIME,"300" );
ThreadProperties.setProperty(ThreadProperties.KEEPALIVE_PROBE_COUNT, "5");          ThreadProperties.setProperty(ThreadProperties.KEEPALIVE_INTERVAL_TIME,"5");

       try
       {
           server = new ServerSocket(port);
           socket= new Socket("127.0.0.1",6001);
           socket.setKeepAlive(true);
           socket = server.accept();
           try {
                Thread.sleep(600000); //wait for 10 min
            } catch (InterruptedException e) {
                e.printStackTrace();
            }        
              OutputStream outstream = socket.getOutputStream();
              PrintWriter out = new PrintWriter(outstream);
              String toSend = "String to send to server";
              out.write(toSend );
           socket.close();
       }
       catch(IOException i)
       {
           System.out.println(i);
       }
   }

В идеале сокет должен выйти из строя и завершиться с ошибкой на шаге out.write (toSend).Но он все еще в установленном состоянии и закрывается без каких-либо исключений.Как проверить этот случай использования в Java?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...