如何使用Python 2.7.3修复错误61(Mac)和错误10061(Windows)

如何使用Python 2.7.3修复错误61(Mac)和错误10061(Windows),python,windows,macos,sockets,Python,Windows,Macos,Sockets,我目前正在尝试创建一个基本的LAN套接字服务器,当我在同一台计算机上同时使用客户端和服务器时,它可以正常工作。当我尝试在两台计算机(mac和windows)上使用客户端和服务器时,客户端的连接始终被拒绝。以下是我在mac电脑上遇到的错误: Traceback (most recent call last): File "/Users/*****/Desktop/Client V2.py", line 31, in <module> s.connect((host, port)) Fi

我目前正在尝试创建一个基本的LAN套接字服务器,当我在同一台计算机上同时使用客户端和服务器时,它可以正常工作。当我尝试在两台计算机(mac和windows)上使用客户端和服务器时,客户端的连接始终被拒绝。以下是我在mac电脑上遇到的错误:

Traceback (most recent call last):
File "/Users/*****/Desktop/Client V2.py", line 31, in <module>
s.connect((host, port))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py",
line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 61] Connection refused
我不确定这些线路是否必要,也许它们是问题的根本原因:

try:
    remote_ip = socket.gethostbyname(host)

except socket.gaierror:
    #could not resolve
    print "Hostname could not be resolved. Exiting"
    sys.exit()
最后是连接的实际代码。(我调用了套接字
s
) s、 连接((主机、端口))

服务器

HOST = 'localhost' #Symbolic name meaning all available interfaces

PORT = input ("Enter the PORT number (1 - 10,000)")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "Socket Created"

try:
    s.bind((HOST, PORT))
except socket.error, msg:
    print "Bind failed. Error Code : " + str(msg[0]) + " Message " + str(msg[1])
    sys.exit()
print "Socket Bind Complete"


s.listen(10)
print "Socket now listening"
我确信我做了一些非常愚蠢的事情,但是有人能告诉我我的错误是什么吗(或者这是否有可能)。我已经发帖了,但是没有人回复。我还有几个其他的问题,如果有人能回答的话,那就太好了

HOST = 'localhost' #Symbolic name meaning all available interfaces
这并不意味着“所有可用的接口”,而是只有本地机器通过一个特殊的接口,只有在同一台计算机上运行的程序才能看到

HOST = '0.0.0.0' #Symbolic name meaning all available interfaces

是指所有可用的网络接口。当然,您也可以绑定到特定的网络接口,在这种情况下,您只需在字段中输入其ip地址。

为什么localhost适用于两台不同的计算机?我在注释和主机名中进行了更改。为什么
0.0.0.0
是符号名,而不是
localhost
。这有关系吗?“所有可用接口”到底是什么意思?谢谢你的帮助!按照惯例,他们是这样称呼的。所有可用的接口意味着一台计算机可以有多个网络接口(例如,现代服务器级计算机通常有4个以太网接口)。将服务绑定到所有接口(如0.0.0.0所示)并不总是需要的-想象一下,在一台计算机上,有单独的接口为内部网络和internet服务,您不想说您的记帐服务器可以通过internet访问,但您确实希望您的公共网站在这两个接口上都可用),这就是为什么你可以绑定到所有的接口或者只绑定到一个特定的接口。我认为这忽略了另一个问题,代码总是指定
localhost
,OP抱怨他的代码在两台机器之间通信时不起作用。
HOST = '0.0.0.0' #Symbolic name meaning all available interfaces