2

我可以运行我的程序的两个实例并将它们相互连接,但是当不同 ip 的其他人尝试连接到我的服务器时,他们的套接字无法连接。我的代码没有输入用户计算机的 ip,但有我的 ip(因为我将是唯一运行服务器的人)硬编码。

这是服务器类连接函数:

def connect(self,host,port):
    self.host = host
    self.port = port
    self.unconnected_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.unconnected_socket.bind((self.host,self.port))
    self.unconnected_socket.listen(5)

这是程序创建游戏的时间

self.server = server.Server()
self.server.connect(ip,port) #ip is my computer's ip address
self.serverThread = Thread(target=self.server.serve_forever)
self.serverThread.daemon = True
self.serverThread.start()
self.client.connect(ip,port)

现在这里是类客户端连接函数:

def connect(self,host,port):
    self.host = host
    self.port = port
    self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.socket.connect((self.host,self.port))

当另一台计算机上的某人运行程序但选择加入游戏时:

self.client.connect(ip,port)

我正在使用来自 pygames 的稍作修改的 Mastermind Networking Lib - 1.5.2。

4

1 回答 1

1

盲目猜测:您可能正在将您的服务器绑定到地址127.0.0.1(或localhost)。无法从出站连接访问此地址。相反,您应该将绑定地址的主机设置为socket.INADDR_ANY

于 2012-08-03T06:31:29.943 回答