[英]Getting an [WinError 10057] in my python multiplayer game (using pygame)
所以我一直在用python和pygame开发一款太空射击时间游戏,并希望使用sockets和网络在游戏中增加多人功能。 游戏还没有完全完成,而且由于我对 python (甚至更新的套接字)还很陌生,所以我的代码不是很优雅。
每当我运行服务器时,都会弹出此错误:
[WinError 10057] A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied
Traceback (most recent call last):
File "C:\Users\user\PycharmProjects\Space_shooter(original_game)\server.py", line 3, in <module>
from client import Ship
File "C:\Users\user\PycharmProjects\Space_shooter(original_game)\client.py", line 163, in <module>
p.r = 0
AttributeError: 'NoneType' object has no attribute 'r'
我认为最后一部分-- "has no attribute 'r'" --
是因为server.py
或network.py
中的错误,但我不完全确定。
你可以在这里看到完整的代码
(忽略test_game.py
)查看server.py
、 network.py
和client.py
看了你的代码。 一般来说,如果您想获得帮助,请尝试按照此处的指南进行操作。 换句话说,向我们提供展示错误所需的最少代码片段,否则会浪费大量时间来找出问题所在。 也不建议像这样组织一个 GH 存储库,将所有不同的工件放在同一个地方,等等等等。
现在到您的问题:它部分与 python 有关,部分与 sockets 有关。 你说你对两者都是新手,所以我会在最基本的层面上解释它。
Python
当您的python代码不在 function 本身或不是特殊主function 的一部分时,将立即执行此代码。 即,如果我有两个文件a.py和b.py :
#a.py
raise Exception("Some Exception")
和 b.py
#b.py
import a
print("some code")
如果我尝试执行 b.py,我将看不到“某些代码”,而是会看到“某些异常”出现。 现在,如果我修改 a.py 以使用特殊的主function 或者即使我将异常引发放在 function 本身,这个问题也会 go 消失。 IE,
一个.py
#a.py (modified)
if __name__ == '__main__':
raise Exception("Some Exception")
现在,如果我尝试执行 b.py,我将看到正在打印的一些代码。
Sockets
现在您知道了这一点,我们可以看到套接字问题是什么。 在您的 server.py 中,您正在导入客户端脚本。 这将尝试执行 client.py 中从第 118 行开始的所有代码,然后再进行下一次导入。 在这部分代码中,您正在尝试连接到服务器。 但是,服务器尚未侦听传入连接(即使此时尚未创建),因为您是在服务器代码的第 16 行执行此操作。
换句话说:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.