Python:具有公共IP的TCP服务器

时间:2015-08-10 15:29:32

标签: python tcp tcpserver

我的代码:

sIP = "20.20.20.20" #My original IP comes from here > whatismyip.com
sPort = 4567
bSize = 2048

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((sIP, sPort))

我的错误:

Traceback (most recent call last):
  File "/home/d0nkey/Scripts/TCPServer.py", line 19, in <module>
    s.bind((sIP, sPort))
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 99] Cannot assign requested address

使用localhost和我的本地IP代码可以正常使用相同的代码。

如何在我的公共IP上设置TCP服务器?

[操作系统:Linux elementaryOS 86x64]

2 个答案:

答案 0 :(得分:2)

您必须将其绑定到本地IP(取决于要使用的网卡),并在路由器中使用端口转发(NAT)将公共IP(对于TCP服务器)的流量转发到本地IP。这样,您的TCP服务器就可以远程使用。

答案 1 :(得分:2)

您只能绑定到运行程序的操作系统的网络接口上可用的地址。你有一个Linux。因此,尝试打开终端并键入&#34; ifconfig&#34;查看所有可用的接口及其地址。也可以使用特殊的&#34; 0.0.0.0&#34;绑定到所有可用的地址。地址。请注意,whatismyip.org会告诉您将内部网络连接到互联网的公共IP。如果您位于防火墙/ NAT后面,则需要设置端口转发,并将请求从防火墙/网关地址重定向到程序正在侦听的本地地址。如果您无法访问防火墙设置,则无法收听其公共地址。