如何解决Python套接字/SocketServer连接[Errno 10048]和[Errno 10049]?
我正在尝试制作一个在线第一人称射击游戏,目前它在我的本地网络上运行得很好。我的目标是让它能够在全球范围内运行。
我之前尝试过让其他Python项目在全球范围内运行,但到现在为止都没有成功。我从ipchicken或者其他地方获取我的IP地址,然后把它设置为服务器的HOST,但当我尝试启动时,出现了这个错误。
socket.error: [Errno 10049] The requested address is not valid in its context
我尝试了很多不同地方找到的可能是我IP地址的版本,但所有的结果都是一样的。
我想,既然我有我的网络空间,我可以试试Python手册上说的做法:
这里的host是一个字符串,表示一个像'daring.cwi.nl'这样的互联网域名。
于是,我输入了我的网络空间的域名(h4rtland.p3dp.com
),结果出现了这个错误:
socket.error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted
不过这个错误只在80端口上出现,其他端口则给我同样的错误。
如果有人能帮我解答这个问题,我将非常感激。
1 个回答
2
首先,80号端口通常是用来处理http流量的。5000号端口以下的端口是特权端口,这意味着你真的不想把你的服务器分配到这个端口,除非你非常非常确定自己在做什么……接下来是一个简单的方法来设置一个服务器套接字,以便接受监听...
import socket
host = None #will determine your available interfaces and assign this dynamically
port = 5001 #just choose a number > 5000
for socket_information in socket.getaddrinfo(host, port, socket.AF_INET, socket.SOCK_STREAM):
(family, type, prototype, name, socket_address) = socket_information
sock = socket.socket(family, type, prototype)
sock.bind(socket_address)
max_clients = 1
sock.listen(max_clients)
connection, address = sock.accept()
print 'Client has connected:', address
connection.send('Goodbye!')
connection.close()
这是一个TCP连接,对于一个第一人称射击游戏,你可能想考虑使用UDP,这样丢包就不会对性能造成太大影响……祝你好运