繁体   English   中英

如何在python3的套接字中刷新/清除缓冲区

[英]How to flush/clear buffer in a socket in python3

如何在 python3 中刷新套接字?

我正在做这样的事情

def clear_buffer(sock):
    try:
        while sock.recv(1024): pass
    except:
        pass

或者

def clear_buffer(sock):
    while True:
        data = sock.recv(1024)
        if not data:
            break

尝试运行这两个函数后,似乎都没有中断 while 循环和/或从传入数据中清除套接字。 当套接字停止接收数据时,如何有条件地做某事?

        while run_network:
            recv = True
            data = b''


            try:
                while recv:
                    try:
                        packet = socket.recv(10240)
                        if packet:
                            data += packet
                        else:
                            recv = False
                        try:
                            pickle.loads(data)
                            recv = False
                        except:
                            recv = True

                    except ConnectionResetError:
                       
                            print(f"{client} has disconnected........")
                            break
                    except ConnectionError:
                     **strong text**
                            print(f"{client}has a Connection Error.....")
                            break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM