2014-09-30 3 views
1

на Python Я хотел бы сделать сервер питона на мой общедоступный IP ...Python - сделать сокет-сервер на протоколе Internet Public

import socket 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.bind(("Public IP", 80)) 
s.listen(5) 
conn, addr = s.accept() 

Но как только он попадает в команду связывания

error: [Errno 10049] The requested address is not valid in its context 

Как бы я это исправил, как бы заставить других людей по всему миру подключиться к моему серверу python.

+0

Вы используете этот код под root? Порт 80 является привилегированным, и для него требуется доступ к суперпользователю. Что происходит, когда вы запускаете тот же код на номер порта> 1024? Почему бы вам не попробовать 's.bind (('', 80))'? Это поможет вашей программе принять форму соединения _everywhere_ – linuxfan

+0

. Пожалуйста, уточните, что вы подразумеваете под «Public IP»? –

+0

IP-адрес от http://www.whatismyip.com/, который является публичным IP-адресом, и я могу подключиться к нему через сокеты python на порту 80. – lolakshooter

ответ

1

Вы можете привязываться только к адресу, настроенному на интерфейсе на вашем локальном компьютере. Поскольку вы используете фразу «public IP», я предполагаю, что ваш общедоступный IP-адрес настроен только на вашем маршрутизаторе, а ваш компьютер имеет частный адрес в вашей локальной сети.

Установите вашу программу на локальный IP-адрес устройства или на любой доступный IP-адрес (например, ("", 80)), а затем настройте переадресацию портов на маршрутизаторе соответствующим образом.

+0

Да, спасибо. Когда я имею в виду публичный IP, я имею в виду IP, который вы используете для подключения к сайтам и веб-сайтам. http://supportcenter.verio.com/KB/questions.php?questionid=655 – lolakshooter