zoukankan      html  css  js  c++  java
  • TCP协议中粘包现象

    在tcp协议网络传输中,才会出现粘包,udp协议不会出现.

         tcp的协议数据不会丢,没有收完包,会继续上次继续接收,总是在收到ack时才会清除缓冲区内容。数据是可靠的,但是就会粘包。

      因为数据发送和接收过程先经过缓冲区,由于数据大小以及网络原因,导致收发信息不能严格同步,造成数据粘连的现象叫做粘包

    粘包有两种形式:

    1.客户端send()发送了一段数据,服务端只recv()收取了一小部分,下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包.

    2.发送端发送数据时间间隔很短,数据也很小,会合到一起,产生粘包.

     1 import socket
     2 sk = socket.socket()
     3 sk.bind(("127.0.0.1", 10096))
     4 sk.listen(1)
     5 s, k = sk.accept()
     6 n = s.recv(1)
     7 print(n)
     8 n1 = s.recv(3)
     9 print(n1)
    10 s.send(b'w')
    11 s.send(b'w')
    12 s.send(b'w')
    13 s.send(b'w')
    服务端
    1 import socket
    2 sk = socket.socket()
    3 sk.connect(("127.0.0.1", 10096))
    4 sk.send(b"1")
    5 sk.send(b"1")
    6 sk.send(b"1")
    7 a = sk.recv(10)
    8 print(a)
    客户端

    服务端输出结果:

    b'1'
    b'11'

    或者

    b'1'
    b'1'

    客户端输出结果:

    b'w'

    或者

    b'wwww'

  • 相关阅读:
    repair table
    利用逻辑备份恢复部分库表
    Web框架理解
    BootStrape基础使用
    jQuery入门
    BOM操作
    DOM操作
    day12 css样式
    JavaScript基础
    day11 前端知识简单总结
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10406887.html
Copyright © 2011-2022 走看看