1.演示环境为windows 10 1903 2.演示代码 3.不作拆包处理的情况 1 // 粘包情况 2 buffer[ret] = '\0'; 3 printf(buffer); 4 5 // 1.数据包定长 6 //char pack[PACK_LENGTH] = { 0 }; 7 //str ...
分类:
其他好文 时间:
2019-09-26 14:53:00
阅读次数:
107
虽然看完了《大话设计模式》,但是工厂模式的三种类型之间的差异,理解还不是非常透彻,那么本文就围绕三者间的差异性来阐述各自的优缺点。 简单工厂模式 (Simple Factory) 首先定义一个产品类的共同接口 分别有三个产品ProductA、ProductB、ProductC ,均实现Product ...
分类:
其他好文 时间:
2019-09-24 13:45:46
阅读次数:
92
本篇文章主要是介绍使用LengthFieldBasedFrameDecoder解码器自定义协议。通常,协议的格式如下: LengthFieldBasedFrameDecoder是netty解决拆包粘包问题的一个重要的类,主要结构就是header+body结构。我们只需要传入正确的参数就可以发送和接收 ...
分类:
数据库 时间:
2019-09-23 12:13:39
阅读次数:
115
推送系统 一、系统设计 二、拆包和粘包 粘包、拆包表现形式 现在假设客户端向服务端连续发送了两个数据包,用packet1和packet2来表示,那么服务端收到的数据可以分为三种,现列举如下: 第一种情况,接收端正常收到两个数据包,即没有发生拆包和粘包的现象,此种情况不在本文的讨论范围内。 第二种情况 ...
分类:
编程语言 时间:
2019-09-16 19:46:43
阅读次数:
118
什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1。可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了 首先需要掌握一个socket收发消息的原理 应用程序所看到的数据是一个整体,或者说是一个流(stream),一条消息有多少字节对应用程序是不可见 ...
分类:
其他好文 时间:
2019-09-14 19:05:06
阅读次数:
91
解决粘包问题 一、解决粘包问题方式一 问题的根源在于,接收端不知道发送端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让发送端在发送数据前,把自己将要发送的字节流总大小让接收端知晓,然后接收端来一个死循环接收完所有数据。 1.1 服务器 1.2 客户端 缺点: 程序的运行速度远快于网络传输 ...
分类:
其他好文 时间:
2019-09-13 17:28:04
阅读次数:
207686
基于UDP协议的socket套接字编程 一、UDP套接字简单示例 1.1 服务器 1.2 k客户端 UDP是无链接的,先启动哪一端都不会报错 UDP协议是数据报协议,发空的时候也会自带报头,因此客户端输入空,服务端也能收到 二、UDP套接字无粘包问题 2.1服务器 2.2 客户端 UPD协议一般不用 ...
分类:
其他好文 时间:
2019-09-13 17:27:42
阅读次数:
102
粘包问题 一、什么是粘包 注意:只有TCP有粘包现象,UDP永远不会粘包,为何,且听我娓娓道来。 首先需要掌握一个socket收发消息的原理 [ 发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用 ...
分类:
其他好文 时间:
2019-09-13 17:14:03
阅读次数:
104
如今,我们想要开发一个网络应用,那是相当地方便。不过就是引入一个框架,然后设置些参数,然后写写业务代码就搞定了。 写业务代码自然很重要,但是你知道: 你的数据是怎么来的吗?通过网络传输过来的呗。 你知道网络是通过什么方式传输过来的吗?光纤呗,TCP/IP协议呗。 看起来都难不住我们的同学们,但是,以 ...
分类:
Web程序 时间:
2019-09-12 23:14:12
阅读次数:
425
[TOC] 一、基于UDP协议的socket套接字编程 socket套接字包括使用TCP协议和UDP协议进行通讯 1.1 用法 socket指定使用UDP通讯协议 发送udp数据 接收udp数据 1.2 udp协议的特点 1. 可以发空数据(数据报协议,有头) 2. 不需要建连接 3. 不会粘包 4 ...
分类:
其他好文 时间:
2019-09-11 19:59:21
阅读次数:
101