Сколько времени требуется ОС для закрытия сокета после вызова метода close () в Java? - PullRequest
0 голосов
/ 18 февраля 2012

Я занимаюсь сетевым программированием на Java. в цикле я открываю сокет, отправляю некоторые данные и закрываю его. но я получаю исключение "соединение уже используется". Я предполагаю, что это происходит, так как я использую один и тот же порт при каждом повторении цикла. Сколько времени требуется ОС (Ubuntu 11.10), чтобы закрыть сокет и освободить порт? спасибо

упрощенный код выглядит следующим образом

while(true){
            Socket clientSocket = new Socket("localhost", 5000);
            PrintWriter outToServer = new PrintWriter( clientSocket.getOutputStream(),true);    
            outToServer.println ("Hi") ;
            clientSocket.close();   
        }

1 Ответ

2 голосов
/ 18 февраля 2012

Это может занять довольно много времени (например, до 3 минут, если есть неотправленные данные)

В вашем случае вы используете другой локальный порт (тот же удаленный порт не имеет значения) каждый раз, поэтомуне должно иметь значения.

Кстати: создание нового соединения довольно дорого, я бы попробовал повторно использовать соединение, а не открывать новое каждый раз.В приведенном выше примере это может быть в 1000 раз быстрее.;)

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