zoukankan      html  css  js  c++  java
  • 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系统不会出现这种问题,

  • 相关阅读:
    TCP/IP详解卷:协议 第八章简要总结
    渗透测试1
    以前的实验博客地址,以前使用csdn
    day03---Node (05)
    day03---Vue(04)
    day03---Vue(03)
    day03---ES6入门(02)
    day03---前端开发和前端开发工具(01)
    Docker实战总结
    ETL之Kettle入门
  • 原文地址:https://www.cnblogs.com/xudachen/p/8856531.html
Copyright © 2011-2022 走看看