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 地址。
我的代码:
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 地址。