首页 > 解决方案 > 修复重新进入 FOV 时其他客户端字符的偏移量,(PyGame 和套接字)

问题描述

我希望在这里发布问题没有害处。它真的让我发疯......

https://hastebin.com/ekigenewel.rb <-客户端

https://hastebin.com/esuhanigop.py <- 服务器

https://hastebin.com/orutodejif.yaml <- .owo 地图文件

我确实知道错误跟踪需要时间并且愿意提供帮助,因此我不期待任何事情,只是我怀疑我自己能做到,我已经浪费了大约 4 个小时我的想法是我制作一个带有 pygame 和套接字的多人游戏。我有一个问题,当客户端 A 上的字符 A 退出客户端 B FOV 并随后出现第二个问题时。问题是客户端 B char A 以恒定增量 [3.3] 偏移。

提前致谢

标签: pythonsocketspygamelogic

解决方案


您的网络代码不处理客户端断开连接。一个简单的检测方法是当套接字.recv()返回一个空的数据列表时。目前它进入一个快速的无限循环。

您的功能的一个小补丁esuhanigop.py threaded_client()足以解决问题:

def threaded_client(connection,addr):
    while True:
        data = connection.recv(2048)
        if ( len( data ) == 0 ):                     # Client has disconnected
            break                                    # Stop communications
        set_dat(addr,str(data,encoding='UTF-8'))
        dat = get_dat()
        if dat:
            connection.sendall(str.encode(dat,encoding='UTF-8'))
    connection.close()

有了这个补丁,我可以多次连接和断开与服务器的连接,而不会看到任何 python 错误。


推荐阅读