9

我正在编写一个脚本,该脚本将在两台可以访问互联网的不同计算机之间传输数据。我正在使用 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()

当我在两台具有 Internet 访问权限的不同计算机上运行这些脚本时,客户端无法连接并引发错误,并且服务器将永远等待连接。

我究竟做错了什么?

4

1 回答 1

9

这可能与您看起来不错的代码无关。我宁愿认为这是您使用的 IP 地址的问题。

如果计算机位于不同的网络上,您需要确保您传递的 IP 地址是网络可访问的地址。基本上这意味着如果您使用的 IP 以 192.168 开头.?.? 那么你使用了错误的IP。

您可以通过运行以下命令轻松检查:
(windows): ipconfig
(linux): ifconfig

如果您使用的是正确的 IP 地址,那么我会检查我的路由器设置和/或防火墙设置,这很可能会阻止您尝试使用的端口号。

于 2012-12-22T23:39:03.347 回答