在套接字中使用公共IP地址

时间:2019-03-16 15:23:29

标签: sockets tcp network-programming

我是套接字编程的新手。我的套接字可以使用localhost或本地ip。但是,为什么不能使用我的公共IP创建套接字服务器?当我尝试在python中执行此操作时,它抱怨“无法分配请求的地址”。

import socket
s=socket.socket()
host="address"
port=5000
s.bind((host, port))
s.listen(5)
while True:
    c, addr=s.accept()
    result=c.recv(1024)
    print(result.decode('utf-8'))
    c.send("""
  test
""".encode('utf-8'))
    c.close()

我从以下网站获得的IP:http://whatismyip.host/

1 个答案:

答案 0 :(得分:1)

诸如http://whatismyip.host/之类的服务将向您显示路由器的公共地址,即连接到Internet的计算机。如果您查找台式机的IP,它可能会显示类似192.168.0.10的内容,其中192.168.0.1是您在台式机中输入的路由器的地址,即“网关”。

您的路由器类似于防火墙,将您的家庭网络与公共Internet分开。

为了在台式机上接收连接,您需要在路由器上配置端口转发。 您仍将在192.168.0.10(您本地计算机的IP)上侦听python进程。或者,您可以将其设置为0.0.0.0,这是“所有可用接口”的简写。

请注意,您的公共IP地址可能不稳定。