• python3 udp不黏包但丢数据


    一次性发送的数据量特别的大,导致对方无法接收那么大的数据时,会出现丢数据的情况哦。

    # UDP服务端_server.py
    import socket
    import subprocess
    
    udp_server = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ("127.0.0.1", 8001)
    udp_server.bind(ip_port)
    from_client_msg, addr = udp_server.recvfrom(1024)
    print("来自客户端的消息:", from_client_msg.decode("utf-8"))
    cmd = input(">>>:").strip()
    res = subprocess.Popen(
        cmd,
        shell=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
    )
    send_bytes = res.stdout.read()
    udp_server.sendto(send_bytes, addr)
    print(len(send_bytes))
    udp_server.close()
    # UDP客户端_client.py
    import socket
    
    udp_client = socket.socket(type=socket.SOCK_DGRAM)
    ip_port = ("127.0.0.1", 8001)
    udp_client.sendto("我是客户端".encode("utf-8"), ip_port)
    from_server_msg, addr = udp_client.recvfrom(1024)
    print("来自服务端的消息:", from_server_msg.decode("gbk"))
    udp_client.close()

    当在服务端输入ipconfig时,客户端会报错:

    Traceback (most recent call last):
      File "G:/python28/code/day07/整理笔记/TCP的黏包现象/TCP黏包现象客户端_client.py", line 7, in <module>
        from_server_msg, addr = udp_client.recvfrom(1024)
    OSError: [WinError 10040] 一个在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或该用户用于接收数据报的缓冲区比数据报小。
  • 相关阅读:
    Pyton 练习题2
    Python 知识点练习
    pycharm 汉化
    关于sublime编辑Python的安装与配置
    python练习题
    虚短和虚断
    OSI的7层协议
    5V电压的制作
    三角波,方波,正弦波的转换
    单片机不工作,晶振是否起振怎么检查
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10929668.html
Copyright © 2020-2023  润新知