java: ошибка привязки адреса при использовании, когда он не используется (как показывает netstat) - PullRequest
2 голосов
/ 09 октября 2009

Мое приложение устанавливает исходящее соединение с сервером, используя определенный исходный порт (в ожидании проблем с брандмауэром - усиленная система, вероятно, потребует, чтобы порты были указаны заранее).

Моя проблема в том, что мое приложение изначально устанавливает соединение. Однако, если соединение разорвется, оно попытается снова, но сокет получит исключение BindException, говорящее «адрес используется». Это не тот случай, как показывает netstat -pant. Это показывает, что пара порт-источник / удаленный сокет не существует (то есть я даже не вижу ее в режиме WAIT, соединение просто не существует). Я постараюсь подключиться навсегда без какого-либо успеха. Я бы подумал, что если бы это было проблемой с предыдущим соединением, оно в конечном итоге прервалось бы, но это не так. Я получаю исключение привязки навсегда.

В моем случае я подключался к 10.0.1.229:4001 ОТ 10.0.1.20:4002. Поэтому я использовал netstat для поиска исходного сокета (10.0.1.20:4002) или удаленного сокета (10.0.1.229:4001), но ни один не был найден после разрыва исходного соединения, указывая, что адрес НЕ должен использоваться .

Есть ли что-то, что могло бы привести к тому, что это соединение останется, даже если netstat не сообщает об этом?

Пожалуйста, обратите внимание, что я нахожусь на Linux, и я также понимаю, что использование случайного порта источника будет работать вокруг моей проблемы, но не решит ее.

Пожалуйста, дайте мне знать.

Спасибо, JBU

1 Ответ

2 голосов
/ 09 октября 2009

close () не вызывался, когда происходили определенные плохие вещи - дох!

...