2014-09-30 92 views
1

关于Python我想作一个Python服务器上我的公网IP ...Python的 - 使公共互联网协议套接字服务器

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

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

但是,一旦它击中bind命令

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

我将如何解决这个问题,我将如何让全球其他人连接到我的python服务器。

+0

你是否以root身份运行此代码?端口80有特权,需要超级用户访问才能绑定。当您在端口号> 1024上运行相同的代码时会发生什么?你为什么不试试's.bind(('',80))'?这将使你的程序接受连接形式_everywhere_ – linuxfan 2014-09-30 01:27:56

+0

请更准确地说明你的意思是“公共IP”? – 2014-09-30 01:48:36

+0

该IP来自http://www.whatismyip.com/,它是一个公共IP,我可以通过端口80上的python套接字连接到它。 – lolakshooter 2014-09-30 01:52:38

回答

1

您只能绑定到在本地计算机上的接口上配置的地址。由于您使用的是“公共IP”这个短语,因此我假设您的公网IP只在您的路由器上配置,而您的计算机在您的本地网络上有一个私有地址。

将程序绑定到计算机的本地IP或任何可用的IP(例如,("", 80)),然后在您的路由器上正确配置端口转发。

+0

是的,谢谢。当我的意思是公共IP时,我的意思是你用来连接到网站和网站记录的IP。 http://supportcenter.verio.com/KB/questions.php?questionid=655 – lolakshooter 2014-09-30 02:01:43