套接字绑定混乱

时间:2015-03-24 19:43:06

标签: python sockets

我已经使用我的IPv4地址创建了一个主机/客户端应用程序,但现在想要创建相同的应用程序,除了我希望它能够与不同网络上的客户端连接。我认为我将服务器绑定到我的公共IP地址但是这给了我这个错误:[WinError 10049] The requested address is not valid in its context我应该用什么IP来绑定我的服务器并连接远程客户端?

# host = public ip address. Took out just for safety concerns but on my 
# machine the actually ip is there
port = 5000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
print("Server @ " + host + " awaiting connections on port " + str(port))
s.listen(1)
while True:
    client, address = s.accept()
    print("Connected with " + str(address))
    data = client.recv(1024)
    print(str(address) + " name is " + data.decode("utf-8"))
    if not data:
        break
s.close()

1 个答案:

答案 0 :(得分:0)

您的程序必须绑定到分配给其运行的计算机的IP地址。如果您在防火墙后面,则需要防火墙将流量转发到该IP。

公共IP:1.1.1.1

计算机IP:2.2.2.2

程序绑定到2.2.2.2,客户端连接到1.1.1.1(路由器/防火墙将流量从公共1.1.1.1转发到私有2.2.2.2)。