Я написал 2 программы на Python 2.7. Один создает сокет хоста, а другой - сокет клиента. Затем они пытаются подключиться. У меня была хост-программа на моем ПК, и я поместил клиентскую программу на телефон, который был подключен к WIFI в той же сети, что и мой ПК. Я установил клиентскую программу (на моем телефоне, которая находится в моей локальной сети) для подключения к локальному IP-адресу моего ПК. Я проверил ошибки в своем коде и обнаружил, что он безупречен. Однако когда я попытался запустить его, я получил очень странное поведение взамен:
- Порт правильный. Имя хоста правильное. Я пытаюсь подключиться. Ничего не произошло. Соединение не установлено.
- Я перезагружаю свой компьютер.
- Я попробую это снова. Тот же результат.
- Я отключаю как локальный, так и публичный брандмауэр.
- Теперь я что-то получаю, но только на моем клиентском устройстве: [Errno 111] Соединение отказано.
- Я снова включаю свои брандмауэры.
- Тот же результат, что и в 1. (нет связи)
- Я запускаю программу хоста на своем ноутбуке. Я пытаюсь подключиться. Оно работает!
- Я перезагружаю роутер и снова запускаю свою хост-программу на ПК. Тот же результат, что и в 1.
- Теперь я также запускаю клиентскую программу на своем ПК, подключая ее к «localhost». Оно работает.
Я делаю то же, что и в 10. Настройка клиентской программы для повторного подключения к локальному IP-адресу моего ПК. Ошибка:
Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> s.connect(cn) File "C:\Python27\lib\socket.py", line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
В 6. Я пришел к выводу, что проблема связана с ПК и что мои программы работают нормально.
Некоторые интелы:
- Windows 7 на ПК и ноутбуке.
- Я использую Python 2.7.
- Ноутбук и смартфон подключены к сети через WIFI, ПК через кабель.
- Я пробовал разные порты, чтобы убедиться, что они не были проблемой.
вероятно не так актуально, но вот код для хоста и клиента http://pastebin.com/raw/wswMi5SV
Что здесь происходит?
Ответы:
Вы в настоящее время связаны с
localhost
который является только внутренним интерфейсом. Программы, которые связаны с127.0.0.1
не доступны по сети, это по замыслу. Это можно увидеть, когда вы получаете «отказано в соединении», когда вы соединяетесь с выключенным межсетевым экраном. Когда вы отправляете TCP SYN на закрытый порт ОС отправит обратно TCP RST вернуться к клиенту, чтобы указать, что порт закрыт.Когда вы говорите, привязка к
0.0.0.0
не работает, вы можете быть более конкретным? Как это терпит неудачу точно?Одна вещь, которую вы можете попробовать это:
Если я правильно помню, это попытается привязать все доступные интерфейсы. Я не уверен, что вы пробовали ранее, но это должно решить вашу проблему.
источник