2012-12-22 51 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.现在它工作正常。非常感谢你 :) –

相关问题