【发布时间】:2021-08-17 19:54:00
【问题描述】:
所以我一直在使用 python 和 pygame 开发一款太空射击时间游戏,并希望使用套接字和网络在游戏中添加多人游戏功能。游戏还没有完全完成,而且我对 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 中的错误,但我不完全确定。
可以查看完整代码here
(无视test_game.py)
查看server.py、network.py 和client.py
【问题讨论】:
-
您在
network.Network.connect中遇到错误,但由于您有一个except: pass语句,所以您不知道是哪个。永远,never 在任何地方都有except: pass声明。至少打印异常。 -
所以我会做这样的事情吗:除了 socket.error as e: print(e) (对不起,如果这是一些非常基本的网络编程——我对此很陌生)跨度>
-
好的,我试了一下,出现了这个错误(连同问题中的那个):[WinError 10061] 无法建立连接,因为目标机器主动拒绝了它
-
您确实需要删除所有
try..except语句。如果目标拒绝它,这意味着没有服务器在运行。这可能意味着您在server.py文件的某处遇到异常并且正在抑制它,或者您甚至没有执行它。
标签: python sockets networking server pygame