Пингует компьютеры по сети - PullRequest
1 голос
/ 07 апреля 2011

Я исследователь в университете, и я пробую свои силы в любительском программировании на java2.

Я работал над учебным руководством по Java2 для KnockKnockServer / Client, чтобы посылать строки из одной программы в другую.с использованием Java Sockets.

http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html

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

Это прекрасно работает, когда я использую и сервер, и клиент, работающий на одной машине, и имя машины в качестве "localhost"

kkSocket = new Socket("localhost", 4444);

И это также работает дома, когда я использую его намоя домашняя сеть с адресом InetAddress:

InetAddress myaddress = InetAddress.getByName("129.11.138.64");
kkSocket = new Socket(myaddress, 4444);

Однако, когда я пытаюсь сделать то же самое на университетских машинах, это не работает, потому что они находятся за каким-то прокси-сервером, несмотря на то, что две машины следующиедруг к другу и подключены к соседним портам Ethernet.

Вопрос:

Как мне понять, как заставить две машины общаться с каждым другимт, когда у меня нет полного контроля над сетью, в которой они находятся?Я даже не могу понять, как заставить их пинговать друг друга.Я посетил «www.whatismyip.com», чтобы получить внешние ip-адреса каждой машины, но это не сработало, и я посмотрел на ip-адаптеры следующих рабочих адаптеров и шлюз, на котором они включены, но все же я не могу их получитьговорить друг с другом.

Любые идеи.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 07 апреля 2011

Мне кажется, что ваша сеть блокирует трафик через порт 4444. Попробуйте другой порт или подтвердите, что порт 4444 разрешен.

1 голос
/ 07 апреля 2011

Есть несколько различных частей этой проблемы:

1) Могут ли две машины соединяться друг с другом?

Вы можете проверить это из командной строки с помощью команды «ping», доступной как в Windows, так и * nix. Тесты Ping на наличие и надежность соединения с указанной машиной.

2) Может ли маршрут быть отфильтрован?

То, что вы можете пропинговать машину, не означает, что между ними нет брандмауэра или прокси. Вы можете найти маршрут между двумя машинами с помощью команды "tracert". Чем больше шагов в маршруте, тем больше вещей, которые могут остановить ваш сигнал

3) Является ли Java брандмауэром?

То, что он установлен, не означает, что он имеет открытый доступ к сети. Попробуйте получить несколько URL-адресов или аналогичных, чтобы увидеть, имеет ли Java сетевое подключение.

4) Порт заблокирован?

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

5) Как вы делаете это на Java?

Пинг может быть реализован с помощью InetAddress.isReachable ().

6) Что я должен сказать злому администратору сети, который только что появился?

"Я не сканирую порт и сеть! Честно!" Охота на полезные порты является основной операцией взлома. Некоторые рабочие места имеют автоматические инструменты для проверки и считают его неуместным.

1 голос
/ 07 апреля 2011

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

www.whatismyip.com не поможет вам, потому что он даст вам толькообщедоступный IP-адрес маршрутизатора / NAT, ближайший к этому серверу.Нет гарантии, что он также самый близкий к вашим устройствам.Даже если бы это было так, эта информация была бы бесполезна, потому что вы (чаще всего) не можете предсказать, как NAT преобразует ваш частный IP-адрес в общедоступный IP-адрес.

Даже если вы могли бы «угадать» эту информациюСуществует вероятность того, что маршрутизатор / NAT может не позволить вам использовать этот перевод за ним (т. е. в локальной сети).

Чтобы подвести итог, убедитесь, что вы используете надлежащие частные IP-адреса, назначенные вашим устройствам.и убедитесь, что ни один маршрутизатор или межсетевой экран не блокирует трафик через рассматриваемый порт.

1 голос
/ 07 апреля 2011

Даже я не могу пропинговать две машины на своем рабочем месте.

вам нужно изменить настройки сети или попробовать следующее:
(инструкции для IE) Перейдите в Tools-> Internet Options -> LANsettings -> advanced.
Добавить исключения в поле: «Не использовать прокси-сервер для адресов, начинающихся с:»
введите начальные номера ip сетей, например, если в вашей сети ip добавляет начальные номера с 10 .--. - .-- напишите 10. * в поле.

...