2016-11-05 2 views
0

Я сейчас работаю над простой программой для отправки файла через TCP с помощью Java. У меня есть проблема, что я не могу подключиться между компьютерами (я тестирую приложение с помощью маршрутизатора и локальных IP-адресов).Java-TCP-соединение

я начинаю соединение по:

sendSocket = new Socket(sendIp, port); 

и я стараюсь, чтобы получать соединение на следующий ПК с помощью:

servsock = new ServerSocket(port); 
recieveSocket = servsock.accept(); 

где порт 12222, sendIp является 169.254.5.47 (второй компьютер который получает)

и myIP - 192.168.0.52 (компьютер, который отправляет)

Что я делаю неправильно?
Я всегда использую тот же порт, и я вижу в TCPView, что приложение Java использует этот порт. Возможно, я назначаю неверный IP-адрес, или как-то блокирует мой брандмауэр.

С наилучшими пожеланиями и спасибо, Chris

+0

они, похоже, не являются частью одной и той же сети? –

+0

проверьте подключение прежде, чем тестировать ваше приложение, поскольку отправитель и target'IP не находятся в одной локальной сети. Telnet - удобный инструмент для тестирования этого. –

ответ

0

Если это сеть для Windows, то IP 169.254.5.47 означает, что хозяин не получить действительный IP-адрес от DHCP. В стандартной локальной сети оба адреса должны находиться в одном классе C (192.168.0. *).

Вы должны сначала решить эту физическую проблему в своей сети и протестировать ее с помощью ping (каждый хост должен иметь возможность пинговать другой и видеть ответы).

+0

Вы правы. Я проверил IP-адреса на маршрутизаторе, и я смог установить соединение. Проблема в том, что на втором компьютере Java-приложение возвращает другой IP-адрес, чем есть. Я использую для этого: myIp = InetAddress.getLocalHost(). GetHostAddress(); Можно ли исправить это? Спасибо, Крис –