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

时间:2013-02-10 01:01:18

标签: 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))
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

在我的窗户上我有同样的错误,只有数字不同。我已经关闭了传入和传出连接的Windows防火墙,我对实际问题是多么困惑。这是我的端口代码:

客户端

#Get host and port info to connect
host = 'localhost'
port = input ("What is the PORT number?")

我不确定这些行是否必要,也许它们是问题的根本原因:

try:
    remote_ip = socket.gethostbyname(host)

except socket.gaierror:
    #could not resolve
    print "Hostname could not be resolved. Exiting"
    sys.exit()

最后,连接的实际代码。 (我调用了套接字s)     s.connect((主持人,端口))

服务器

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"

我确信我做了一些非常愚蠢的事情,但有人可以告诉我我的错误是什么(或者甚至是否可能是跨操作系统)。我已发布here,但没有人回复。我还有其他几个问题,如果有人试图回答它们会很棒。

1 个答案:

答案 0 :(得分:1)

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

并不意味着“所有可用接口”,而只是本地机器通过特殊接口,只对同一台计算机上运行的程序可见。

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

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