Python:具有 public IP 的 TCP 服务器

Python: TCP Server with public IP

我的代码:

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 可以正常工作。

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

[OS: Linux 基本OS 86x64]

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

您只能绑定到作为 运行 您的程序的操作系统的网络接口上可用的地址。你有一个Linux。因此,请尝试打开一个终端并输入 "ifconfig" 以查看所有可用接口及其地址。也可以绑定到所有可用地址,使用特殊的“0.0.0.0”地址。请注意 whatismyip.org 告诉您 public 将您的内部网络连接到互联网的 ip。如果你在 firewall/NAT 后面,那么你需要设置端口转发,并将请求从 firewall/gateway 地址重定向到你的程序正在侦听的本地地址。如果您无权访问防火墙设置,则无法侦听其 public 地址。