2012-12-22 50 views
8

我正在研究一個腳本,它可以在兩臺可訪問互聯網的不同計算機之間傳輸數據。我正在使用Python的套接字標準模塊。當我在單臺計算機上運行客戶端和服務器時,它工作正常,但當它們在不同計算機上運行時,我無法使其工作。Python:通過套接字在兩臺計算機之間發送數據

這裏是我的服務器代碼的一部分:

import socket, time,os, random 

class Server(): 
    def __init__(self,Adress=('',5000),MaxClient=1): 
     self.s = socket.socket() 
     self.s.bind(Adress) 
     self.s.listen(MaxClient) 
    def WaitForConnection(self): 
     self.Client, self.Adr=(self.s.accept()) 
     print('Got a connection from: '+str(self.Client)+'.') 


s = Server() 
s.WaitForConnection() 

這裏是我的客戶端代碼的一部分:

import socket 

class Client(): 
    def __init__(self,Adress=("Here is the IP of the computer on which the \ 
            server scrip is running",5000)): 
     self.s = socket.socket() 
     self.s.connect(Adress) 

c = Client() 

當我運行在兩個不同的計算機上,這些腳本與互聯網接入客戶端無法連接並引發錯誤,服務器正在等待連接。

我在做什麼錯?

+2

這兩臺電腦是如何連接的?路徑上的任何路由器/防火牆/ NAT設備。 –

+0

兩臺電腦都連接到不同的WiFi –

+0

如何配置這兩個WiFi路由器? –

回答

7

這可能不是你的代碼看起來沒問題。我寧願認爲這是您使用的IP地址的問題。

如果計算機在不同的網絡上,您需要確保您傳遞的IP地址是網絡可訪問的IP地址。基本上這意味着如果你使用的IP以192.168開頭。那麼你使用了錯誤的IP。
(窗口):

您可以輕鬆地通過運行以下命令檢查該IPCONFIG
(Linux版):使用ifconfig

如果您使用的是正確的IP地址,然後我會檢查我的路由器的設置和/或防火牆設置可能會很好地阻止您嘗試使用的端口號。

+1

我很確定這是一個配置問題,因爲路由器需要將端口轉發到服務器的局域網地址...... – l4mpi

+0

問題已解決。這是一個路由器現在將數據包重定向到設置服務器的計算機的問題。我已經在路由器設置中改變了它,並將它重定向到這臺計算機的私有IP(192.168.1.35)和端口5000.現在它工作正常。非常感謝你 :) –

相關問題