zoukankan      html  css  js  c++  java
  • 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] 一个在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或该用户用于接收数据报的缓冲区比数据报小。
  • 相关阅读:
    c++坐标移动
    c++字串的连接最长路径查找
    c++句子逆序——堆栈实现
    c++句子逆序——substr函数
    c++计数法解决统计不同字符个数
    c++提取不重复的整数-计数
    C++取近似值简单算法
    c++排序去重
    c++计数排序例子
    分布式服务框架 Zookeeper
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10929668.html
Copyright © 2011-2022 走看看