【发布时间】:2014-05-24 08:59:05
【问题描述】:
我想执行以下简单的服务器代码:
import socket
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 22331 # Reserve a port
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
while True:
c, addr = s.accept() # Establish connection with client.
print('Got connection from', addr)
c.send('Thank you for connecting')
c.close()
执行时出现以下错误:
OSError: [Errno 99] Cannot assign requested address
为什么操作系统无法将指定端口与地址绑定?
【问题讨论】:
-
你可能想要
host = '0.0.0.0'。socket.gethostname()返回主机名,而不是 IP 地址。 -
我同意@ValentinLorentz 的观点,您应该尝试具体说明IP 或使用
0.0.0.0。看起来您的gethostname()返回的 IP / 名称无法解析为您正在执行脚本的主机上的 IP 地址。 -
您在问题中提到的代码不会产生此错误。它在带有 python v2.7 的 Windows 8 上运行良好。请也向我们展示客户端代码!
-
@ValentinLorentz 应该是 host=IPAddress 而不是主机名才能被绑定?
-
它适用于提供 IP 地址,但不适用于主机名
标签: python socketserver