我可以运行我的程序的两个实例并将它们彼此连接,但是当其他人在不同的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)
我正在使用稍微修改过的Mastermind Networking Lib - 1.5.2来自pygames。
答案 0 :(得分:1)
盲目猜测:您可能将服务器绑定到地址127.0.0.1
(或localhost
)。无法从出站连接到达此地址。
相反,您应该将绑定地址的主机设置为socket.INADDR_ANY