重新输入FOVPyGame和套接字时,将偏移量固定在其他客户端的字符上

问题描述

我希望在此处发布问题不会有任何危害。真的让我发疯了...

https://hastebin.com/ekigenewel.rb

https://hastebin.com/esuhanigop.py

https://hastebin.com/orutodejif.yaml

我确实发现错误跟踪需要时间并且会有所帮助,因此我没有期待任何事情,只是我怀疑自己可以做到,我已经在上面浪费了4个小时 这个想法是让我用pygame和套接字制作多人游戏。我有一个问题,当客户端A上的字符A从客户端B FOV中退出,然后第二个跟随它时。问题是客户端B char A的偏移量为常数delta [3.3]。

预先感谢

解决方法

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

对您的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错误的情况下,增加与服务器的连接和断开连接。