Назад | Перейти на главную страницу

По какому адресу клиент должен подключить сокет к

Решено

РЕШЕНИЕ: Я попытался установить соединение с небольшой серверной программой, и она работает отлично. Я мог подключить его к 10.195.5.53. Моя проблема заключается в программном обеспечении моей клиентской программы, она не скомпилирована правильно.

У меня есть сервер в UNIX SunOs и клиент в Linux. Они подключены к одной сети, и у меня есть доступ к обеим.

Когда я выполняю "клиентскую" программу также на машине UNIX, я могу подключить их, используя локальный адрес: 127.0.0.1. Но когда я запускаю программу на машине Linux, я не могу подключить клиента.

Здесь ifconfig -a команда на сервер машина:

lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
    inet 127.0.0.1 netmask ff000000 
aggr2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
    inet 10.195.5.53 netmask ffffff00 broadcast 10.195.5.255
igb2: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
    inet 190.10.1.95 netmask ffff0000 broadcast 190.10.255.255

Я попытался подключить клиента, указав два адреса, которые я там видел: 10.195.5.53, 190.10.1.95 безуспешно.

РЕДАКТИРОВАТЬ: ping 10.195.5.53 успешно подключается из Linux.

Любой совет о том, что следует проверять с помощью IP-адресов или как получить дополнительную информацию о сервере с точки зрения клиента, более чем приветствуется.

После создания серверного сокета я попробовал команду: netstat -a | egrep "7777". 7777 - это порт, который я использую с сервером.

   Local Address        Remote Address    Swind Send-Q Rwind Recv-Q    State
      *.7777               *.*                0      0 49152      0 LISTEN

Означает ли это *, что он прослушивает любой IP-адрес с этим портом? Если да, то почему розетка не подключается.

РЕДАКТИРОВАТЬ: Я пробовал программу как с компьютера Linux, подключенного к локальному хосту, так и с клиентского сокета. Скорее всего у меня проблема с кодом. Некоторая несовместимость с ОС.

Поскольку они могут пинговать друг друга, это, возможно, проблема неправильной конфигурации в приложении, не принимающем внешние соединения, или в брандмауэре, блокирующем входящие соединения. Попробуй это:

Сервер (сначала выключите приложение или используйте другой порт):

nc -l 7777 

Клиент:

nc server 7777

Попробуйте что-нибудь напечатать. Если вы видите это на терминале сервера, значит, у вас неправильная конфигурация в приложении. В противном случае проблема в брандмауэре.

Да, *.7777 означает, что он прослушивает "все" интерфейсы. Пытаться arping из окна linux в ящик Sun. Если поле Sun не отвечает, скорее всего, между ними возникла проблема с оборудованием.

Если вы все же получили ответ, проверьте:

  • tcpdump на сервере при попытке подключения из Linux
  • брандмауэры в обеих системах
  • одинаковый MTU на всех сетевых картах
  • маршрутизация правильная на обоих хостах

Что-то должно появиться.