我想执行以下简单的服务器代码:
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为什么操作系统不能将指定的端口与该地址绑定?
发布于 2014-05-24 17:14:37
如果可以使用ip地址,但不使用主机名。
在将ip映射到主机名的/etc/hosts中应该有类似这样的内容。
127.0.0.1 localhost
127.0.1.1 your_hostname_here
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters您的/etc/hostname显然应该与上面的相同。
重新启动,您应该能够成功ping通您的主机名。
您还可以使用socket.gethostbyname(socket.gethostname())获取i.p,而不是主机名
发布于 2014-05-24 20:54:58
尝试将SO_REUSEADDR选项设置为套接字:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)https://stackoverflow.com/questions/23843165
复制相似问题