如何在Python 2.7.3中修复Mac的61错误和Windows的10061错误
我现在正在尝试创建一个基本的局域网(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上也出现了同样的错误,只是数字不同。我已经关闭了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, port))
服务器
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"
我确信我做了一些很傻的事情,但能不能请大家告诉我我的错误是什么(或者这在不同操作系统之间是否可行)。我之前在这里发过帖子,但没有人回复。我还有其他几个问题在那里,如果有人能尝试回答一下,那就太好了。
1 个回答
1
HOST = 'localhost' #Symbolic name meaning all available interfaces
这并不是说“所有可用的接口”,而只是指本地计算机上的一个特殊接口,这个接口只有在同一台电脑上运行的程序才能看到。
HOST = '0.0.0.0' #Symbolic name meaning all available interfaces
这确实是指所有可用的网络接口。当然,你也可以绑定到一个特定的网络接口,这种情况下你只需要在字段中输入它的IP地址。