1 粘包问题 粘包问题是针对TCP协议的,UDP协议不会遇到这个问题。TCP是流式协议遇到的粘包问题主要还是因为接收方不知道消息之间的界限,不知道一次性提取多少字节的数据所造成的。 2 解决粘包问题的代码模板 # 服务端 import subprocess import struct import ...
分类:
编程语言 时间:
2020-04-22 00:19:05
阅读次数:
69
socketserver 模块的使用与粘包问题的解决 基于tcp协议 服务端: 客户端: ...
分类:
编程语言 时间:
2020-04-21 23:54:26
阅读次数:
110
一、什么是粘包问题 发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议 ...
分类:
其他好文 时间:
2020-04-21 18:20:20
阅读次数:
57
1、基于TCP协议实现远程执行命令 服务端 # 服务端应该满足两个特点: # 1、一直对外提供服务 # 2、并发地服务多个客户端 import subprocess from socket import * server=socket(AF_INET,SOCK_STREAM) server.sets ...
分类:
其他好文 时间:
2020-04-21 16:49:36
阅读次数:
67
问题背景 NIO是面向缓冲区进行通信的,不是面向流的。我们都知道,既然是缓冲区,那它一定存在一个固定大小。这样一来通常会遇到两个问题: 消息粘包 :当缓冲区足够大,由于网络不稳定种种原因,可能会有多条消息从通道读入缓冲区,此时如果无法分清数据包之间的界限,就会导致粘包问题; 消息不完整 :若消息没有 ...
分类:
编程语言 时间:
2020-04-19 17:40:24
阅读次数:
56
1、粘包的概念粘包:多个数据包被连续存储于连续的缓存中,在对数据包进行读取时由于无法确定发生方的发送边界,而采用某一估测值大小来进行数据读出,若双方的size不一致时就会使指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。 2、出现粘包的原因出现粘包 ...
分类:
其他好文 时间:
2020-04-11 20:49:47
阅读次数:
67
最近项目中遇到了问题,会偶然出现服务端返回不是客户端请求报文的情况 经过排查后发现,是客户端的http长链接网络库,在第一次发送超时的情况下,没有断开连接,而是用此长链接继续发送, A包发送但超时未响应,然后发送B包,这时收到了A包的响应,则就会认为A包的响应为B包的响应内容,这就导致了此后的htt ...
分类:
Web程序 时间:
2020-04-08 20:52:21
阅读次数:
81
无论走到哪里,都应该记住,过去都是假的,回忆是一条没有尽头的路,一切以往的春天都不复存在,就连那最坚韧而又狂乱的爱情归根结底也不过是一种转瞬即逝的现实。——马尔克斯<palign="center">本文已经收录至我的GitHub,欢迎大家踊跃star和issues。</p><h4align="center"><ahr
分类:
其他好文 时间:
2020-04-06 23:53:46
阅读次数:
94
No.30 今日概要 非阻塞IO模型 验证客户端合法性 socketserver模块 计算器 内容回顾 TCP协议的粘包问题 本质:接收的边界不清晰 解决方式:自定义协议 文件发送自定义协议 先发送报头字典的字节长度 再发送字典(字典中包含文件的名字、大小.....) 最后发送文件内容 TCP和UD ...
分类:
其他好文 时间:
2020-04-05 23:56:33
阅读次数:
106
No.29 今日概要 粘包问题 内容回顾 OSI七层协议 应用层 传输层(理解port) tcp 可靠、慢、全双工、数据长度大 三次握手:发了 syn/ack 信号 三次握手把一个回复和请求连接的两条信息合并成一条了 四次挥手:发了 fin/ack 信号 由于一方断开连接后,可能另一方还有数据没有传 ...
分类:
其他好文 时间:
2020-04-05 23:51:20
阅读次数:
72