2
我可以運行我的程序的兩個實例並將它們連接到對方,但是當其他IP地址的其他人嘗試連接到我的服務器時,它們的套接字無法連接。我的代碼沒有輸入用戶計算機的IP,但我的IP(因爲我將要運行的服務器的唯一的人)的硬編碼python TCP客戶端無法連接到我的TCP服務器
這裏是服務器類連接功能。
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 1.5.2。
您的服務器正在偵聽哪個主機?確保它是一個公共接口,而不是本地主機。 – gecco 2012-08-03 06:07:59
另外不要忘記檢查防火牆規則。 – 2012-08-03 06:53:28
軟管/ IP是我猜我的房屋的IP地址不是服務器和客戶端的127.0.0.1。我確保將pythonw作爲防火牆的例外。 – user1270289 2012-08-03 18:26:39