«java.net.BindException: адрес уже используется» при попытке быстрого создания и уничтожения сокета для нагрузочного тесJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 «java.net.BindException: адрес уже используется» при попытке быстрого создания и уничтожения сокета для нагрузочного тес

Сообщение Anonymous »

Я пытаюсь загрузить тестовый сервер Java, открывая большое количество сокет-соединений с сервером, проверяя подлинность, закрывая соединение и затем повторяя его. Мое приложение какое-то время работает отлично, но в конце концов я получаю:


java.net.BindException: Адрес уже используется: подключитесь

Согласно документации, которую я прочитал, причина этого в том, что закрытые сокеты по-прежнему занимают назначенный им локальный адрес в течение определенного периода времени после вызова метода close(). называется. Это зависит от ОС, но может занимать порядка нескольких минут. Я попробовал вызвать setReuseAddress(true) для сокета в надежде, что его адрес можно будет использовать повторно сразу после вызова close(). К сожалению, это не так.

Мой код для создания сокета:

Код: Выделить всё

Socket socket = new Socket();
socket.setReuseAddress(true);
socket.connect(new InetSocketAddress(m_host, m_port));
Но я все равно получаю эту ошибку:


java.net.BindException: Адрес уже используется: подключитесь через некоторое время.


Есть ли другой способ добиться того, что я пытаюсь сделать? Например, я хотел бы: открыть 100 сокетов, закрыть их все, открыть 200 сокетов, закрыть их все, открыть 300 и т. д., максимум до 2000 или около того сокетов.

Любая помощь будет принята с благодарностью!

Подробнее здесь: https://stackoverflow.com/questions/470 ... pid-socket
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»