После подключения tcp к серверу я закрываю приложение linux и вызывается Socket.close().tcp-соединение в TIME_WAIT не разрешает повторное подключение, java
Проверка netstat -pant, я вижу, что соединение находится в состоянии TIME_WAIT.
Это не позволяет мне немедленно подключиться к серверу, так как я использую тот же порт для подключения. Вместо этого я должен дождаться соединения с таймаутом статуса TIME_WAIT, прежде чем снова смогу снова подключиться.
Я играл вокруг - без ведома - с помощью методов сокета: set_so_timeout(), set_keepalive(), set_so_linger() и set_reuseaddr() - точное назначение орфографии может быть неправильным в этом сообщении.
Мой вопрос: Как я могу получить соединение из статуса TIME_WAIT, чтобы я мог сразу сделать соединение еще раз?
Пожалуйста, дайте мне знать.
Спасибо, JBU
Да, другой порт решает проблему, и я буду использовать это пока. Однако описание метода so_linger выглядит так, что OUGHT работает, если я хочу использовать тот же исходный порт. Я просто не уверен, почему это не так. – jbu
SO_LINGER определенно не рекомендуется. Это поддержка, в лучшем случае, спорадическая на платформах, отличных от BSD. – paxdiablo
Я не думаю, что использование другой строки подключения - изящное решение, должен быть какой-то способ заставить TCP/IP очистить все в сокете и закрыть соединение. –