У меня машина с Windows 7 подключена к 2 подсетям с IP-адресами 10.0.0.241 и 172.17.240.94.

На этом компьютере запускается стороннее Java- приложение, которое внутренне запускает сеанс клиента FTP, подключаясь к FTP-серверу, расположенному в 172.17.240.65.

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

Используя сниффер, я обнаружил, что приложение выдает неправильную команду FTP: PORT 10,0,0,240, x, y (где x, y - любой номер порта).

Таким образом, проблема очевидна: команда PORT выбрала неверный IP-адрес из 2 доступных, и FTP-сервер пытается подключиться к адресу вне своей сети. Правильная команда должна быть ПОРТ 172,17,240,94, х, у.

На других машинах с двумя IP-адресами приложение работает нормально (и команда PORT тоже выглядит отлично), на других нет ... кажется случайным.

У меня нет доступа к исходному коду приложения.

Я попытался изменить порядок IP в конфигурации сетевого адаптера Windows, но безуспешно.

Есть ли способ заставить движок Java выбрать правильный IP-адрес?

1 ответ1

3

Очевидно, что Java-приложение не определяет адрес для PORT на основе IP-адреса партнера. Вероятно, он просто берет адрес, который система сообщает первым, что бы это ни было. Может быть, эта статья базы знаний от MS поможет вам изменить порядок IP http://support.microsoft.com/kb/171320 (это для более старых версий Windows, но все еще может применяться). Вы также можете попробовать изменить порядок привязки. Как изменить порядок привязки сетевых адаптеров в Windows 7? или физически изменить интерфейсы.

Но может быть даже проще изменить java-приложение на использование пассивного режима FTP, когда ему не нужно знать IP своей собственной сети.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .