Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: Как подключиться к удаленному компьютеру с помощью socket (Python)?  (Прочитано 1435 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Xyanight

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля


Пытаюсь связаться с удаленным компьютером с помощью модуля socket, то есть есть клиент/сервер.
У меня вопрос: если в сервере указано, например

portsock = socket(AF_INET, SOCK_STREAM)
portsock.bind((myHost, myPort))

то в клиенте я должен коннектиться соответственно с теми же myHost, myPort?

sock.connect((myHost, myPort))

На тестах по локалке все работает. Попытался подключиться удаленно - не работает. Время ожидания истекло.
Мне тут посоветовали, что нужно знать имя удаленного компьютера (hostname). С другой стороны "сервер" - это просто скрипт на Python, который я запустил на удаленном компьютере, а с другого пытаюсь к нему достучаться. Нет у него никакого хоста. А socket.gethostname() возвращает zavulon-System-Product-Name.
Естественно zavulon-System-Product-Name нельзя использовать в качестве адреса сервера! Что я делаю не правильно?
Это просто какой-то Python!

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 715
    • Просмотр профиля
Может мешать много чего (nat, firewall и т.п.). Опишите конфигурацию сети.

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 519
  • i3
    • Просмотр профиля
Сервер стартанул, так? Клиент должен подключаться к нему, тоесть myHost - это имя того сервака (айпи адрес попробуйте), а порт - тот, который указан в серваке.
Если айпишка пингается, то по айпишке должен подключаться. Единственно, что может быть закрыты порты файерволлом. Но это можно проверить.
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Xyanight

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
Сервер стартанул, так? Клиент должен подключаться к нему, тоесть myHost - это имя того сервака (айпи адрес попробуйте), а порт - тот, который указан в серваке.
Если айпишка пингается, то по айпишке должен подключаться. Единственно, что может быть закрыты порты файерволлом. Но это можно проверить.
Я пробовал подключаться к серверу по IP компа, на котором работает сервак. Соответственно myHost в клиенте указан как IP сервера. Порты, естественно, одинаковые и на сервере и в клиенте. Фаервол на серваке отключали, не помогает. Порты меняли, резудьтат тот же.

Пример, Server.py
myHost = "IP машины на котором запущен сервер" # пробовали "localhost"
myPort = 7500

Пример Client.py
sock.connect(("IP машины на котором запущен сервер", 7500))
Это просто какой-то Python!

Оффлайн Master_Sergius

  • Активист
  • *
  • Сообщений: 519
  • i3
    • Просмотр профиля
а код можете показать?

вот, к примеру кусок хоста:

sockobj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)         
sockobj.bind((g_host, g_port))                                     
sockobj.listen(5)

кусок клиента:

sockobj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                 
sockobj.connect((g_host, g_port))     
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Xyanight

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
а код можете показать?

вот, к примеру кусок хоста:

sockobj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)         
sockobj.bind((g_host, g_port))                                     
sockobj.listen(5)


кусок клиента:

sockobj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                 
sockobj.connect((g_host, g_port))     

Идентичный!
Это просто какой-то Python!

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
вывод можно с сервера
после запуска Server.py

netstat -tulpn | grep 7500
ifconfig

с клиента

sudo apt-get install traceroute netcat-openbsd
nc -zv <IP адрес сервера> 7500
sudo traceroute -T -p 7500 <IP адрес сервера>

Оффлайн Xyanight

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
вывод можно с сервера
после запуска Server.py

netstat -tulpn | grep 7500
ifconfig

с клиента

sudo apt-get install traceroute netcat-openbsd
nc -zv <IP адрес сервера> 7500
sudo traceroute -T -p 7500 <IP адрес сервера>

Спасибо, приду с работы, попробую...
Это просто какой-то Python!

 

Страница сгенерирована за 0.076 секунд. Запросов: 24.