Открытие сокета на внешний компьютер с Python - PullRequest
3 голосов
/ 20 октября 2011

Я использую следующий код для открытия сокета на моем компьютере.Когда я захожу на my_ip: 5000 на моем компьютере, программа отвечает.Однако, когда я использую другой компьютер, ничего не происходит.

HOST = 'my_ip'                 # Symbolic name meaning the local host
PORT = 8000              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()

Я не уверен, если это проблема с брандмауэром или нет.Когда я запускаю тестовый сервер в django, используя manage.py runserver my_ip:8000, я могу подключиться к машине с другого компьютера.Я не уверен, из-за чего я не могу подключиться с другого компьютера, используя приведенный выше код ...

Ответы [ 2 ]

7 голосов
/ 20 октября 2011

Установив для HOST значение 'my_ip', вы можете прослушивать частный IP-адрес, который разрешается только для вашего компьютера для вашего компьютера. Самый известный пример - 127.0.0.1. Вместо этого передайте пустую строку (HOST='') для прослушивания любых запросов, поступающих на указанный порт. Убедитесь, что на обеих машинах используется один и тот же номер порта, то есть 5000 или 8000.

Кроме того, проверьте, предотвращает ли соединение межсетевой экран между компьютерами (или установлен на одном из них).

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

0 голосов
/ 20 октября 2011

Код выглядит правильно, поэтому ваша проблема кроется в другом месте (возможно, проблема с брандмауэром или проблема DNS для "my_ip").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...