Python 3 - 托管服务器

标签 python multithreading sockets server

基本上,我正在为基于 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_PCsocket.gethostbyname()查找参数中给出的主机名的 IP。

但是,要使服务器公开,请执行相同的操作,但在路由器设置中端口转发您的计算机 IP 地址。

关于Python 3 - 托管服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081741/

相关文章:

python - 如何寻找趋势线并计算趋势线与 X 轴的斜率

python - 在 WxPython 中设置帧大小?

java - 如何实现阻塞ThreadPoolExecutor

ios - 从后台线程访问 [UIApplication sharedApplication] 可以吗?

c - 将字符串中的 IP 传递给 htonl

python - 如何在按下按钮时查看菜单?

python - 两组参数 python

c++ - 拆分引用计数如何在无锁堆栈中工作?

java - 我正在尝试使用 Socket 连接到 URL,但只能通过提供 IP 地址(Java android)进行连接

php - 如何从 php 连接到 unix 套接字