• Python--网络编程-----基于UDP协议的套接字不会发生粘包


    服务端:

     1 from socket import *
     2 
     3 server = socket(AF_INET, SOCK_DGRAM)
     4 server.bind(('127.0.0.1', 8080))
     5 
     6 res1 = server.recvfrom(1024)
     7 print('第一次:', res1)
     8 
     9 res2 = server.recvfrom(1024)
    10 print('第一次:', res2)
    11 
    12 server.close()

    客户端:

    1 from socket import *
    2 
    3 client = socket(AF_INET, SOCK_DGRAM)
    4 
    5 client.sendto(b'hello', ('127.0.0.1', 8080))
    6 client.sendto(b'world', ('127.0.0.1', 8080))
    7 
    8 client.close()

    先运行服务端,在运行客户端,并没有发生粘包现象,

    服务端运行结果为:

    1 第一次: (b'hello', ('127.0.0.1', 61924))

    由于windows系统原因,第二次并没有打印出来,

    把服务端第一次recv的字节数修改为1,只能收到1个字节h,其余丢失,

    第二收到的为world,windows系统测试出现问题:

    1 Traceback (most recent call last):
    2   File "C:/Users/xudachen/PycharmProjects/Python全栈开发/第三模块/网络编程/基于udp协议不会发生粘包/服务端.py", line 6, in <module>
    3     res1 = server.recvfrom(1)
    4 OSError: [WinError 10040] 一个在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或该用户用于接收数据报的缓冲区比数据报小。

    linux系统不会出现这种问题,

  • 相关阅读:
    Git 使用记录
    vue threejs
    git如何忽略历史中的文件
    SwiftUI init函数中查询并赋值数据
    SwiftUI Binding数据类型转换
    隐私政策
    Apple开发_神奇资源汇总
    centos安装python记录
    LINUX服务器运行Python出现ModuleNotFoundError的解决方案
    创建Django项目过程
  • 原文地址:https://www.cnblogs.com/xudachen/p/8856531.html
Copyright © 2020-2023  润新知