2012-08-03 443 views
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。

+2

您的服務器正在偵聽哪個主機?確保它是一個公共接口,而不是本地主機。 – gecco 2012-08-03 06:07:59

+0

另外不要忘記檢查防火牆規則。 – 2012-08-03 06:53:28

+0

軟管/ IP是我猜我的房屋的IP地址不是服務器和客戶端的127.0.0.1。我確保將pythonw作爲防火牆的例外。 – user1270289 2012-08-03 18:26:39

回答

1

盲猜:您可能將您的服務器綁定到地址127.0.0.1(或localhost)。無法通過出站連接訪問此地址。 相反,您應該將綁定地址的主機設置爲socket.INADDR_ANY