如何解决Python套接字/ SocketServer连接[Errno 10048]& [Errno 10049]?

时间:2011-08-23 14:43:20

标签: python sockets ip ip-address connect

我正在尝试制作在线FPS游戏,到目前为止它可以在我的本地网络上运行。我要做的是让它全球运作

我过去曾尝试让其他Python项目在全球范围内运行,但到目前为止我还没能让它工作。我从ipchicken或其他任何地方获取我的IP并将其作为服务器的HOST,但是当我尝试启动它时,我得到了它。

socket.error: [Errno 10049] The requested address is not valid in its context

我尝试了很多不同版本的可能是我在不同地方找到的IP地址,但所有这些版本都提供了输出。

我想,既然我有了自己的网站空间,我可以尝试按照Python手册中的说法去做:

  

其中host是一个字符串,表示Internet域符号中的主机名,如'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 个答案:

答案 0 :(得分: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查看的FPS游戏,这样丢弃的数据包不会影响性能...... Goodluck