基本上,我正在为基于 Python 文本的游戏制作游戏服务器。我想要的是让每个玩家制作自己的本地服务器和/或公共(public)服务器,但我似乎不明白。我试过这个:
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = input("Enter an IP: ")
port = 10922
serversocket.bind((host, port))
但是每当我运行它并输入我自己的外部 IP 时,它都会抛出这个错误:
“OSError:[WinError 10049] 请求的地址在其上下文中无效”
编辑:要补充一点,它只适用于 host = "127.0.0.1"但服务器不是这样公开的。
有人能帮忙吗?
最佳答案
它引发此错误的原因是因为您绑定(bind)到未知地址,因此出现错误。
要将套接字绑定(bind)到您的 IP,请执行以下操作:socket.gethostbyname(socket.gethostname())
代替地址。socket.gethostname()
获取计算机的主机名,例如DANS_PC
socket.gethostbyname()
查找参数中给出的主机名的 IP。
但是,要使服务器公开,请执行相同的操作,但在路由器设置中端口转发您的计算机 IP 地址。
关于Python 3 - 托管服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081741/