上篇博客留了个尾巴“而且LineBasedFrameDecoder据说还有一种不要求携带结束符的解码方式”,今天就从源码来看看是怎么回事。 一、基本原理 如果没有netty,用户自行拆包,原理是: netty的原理也是如此。 netty的原理也是如此。 LineBasedFrameDecoder的基 ...
分类:
Web程序 时间:
2017-07-28 13:27:20
阅读次数:
261
一、基于UDP的套接字 UDP服务端 UDP客户端 简单示例: 服务端: 客户端: 二、tcp和udp发送接受数据的区别 1、收发消息的原理 发消息,都是将数据发送到自己端的发送缓存中。 收消息,都是从自己端的环从中收取数据。 1. tcp:send发送数据,recv接受数据。 2. udp:sen ...
分类:
其他好文 时间:
2017-07-11 23:26:33
阅读次数:
315
(一)WebSocket简介 短连接:在传统的Http协议中,客户端和服务器端的通信方式是短连接的方式,也就是服务器端并不会保持一个和客户端的连接,在消息发送后,会断开这个连接,客户端下次通信时,必须再建立和服务器的新连接,这就是短连接。在短链接的情况下,客户端必须不停的主动发起请求,而服务器始终被 ...
分类:
Web程序 时间:
2017-06-30 11:07:34
阅读次数:
205
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2——Netty -- new LengthFieldPrepender(2) : 设置数据包 2 字节的特征码 new LengthFieldBasedFrameDecoder(65535, 0, 2, 0, 2) : 65535 :数据包长度 ...
分类:
Web程序 时间:
2017-06-24 22:45:09
阅读次数:
238
目录 一. 面向对象高级用法 二. 加工标准类型(继承、授权) 三. 迭代协议 四. 上下文管理协议 五. __call__方法 六. 元类 七. socket介绍、基于tcp协议的socket 八. 通讯循环 和 链接循环 九. 基于socket实现远程执行命令 十. 自定义报头解决粘包问题 一. ...
分类:
编程语言 时间:
2017-06-23 19:25:34
阅读次数:
190
上一篇主要说的是protobuf字节流的序列化和解析,将protobuf对象序列化为字节流后虽然可以直接传递,但是实际在项目中却不可能真的只是传递protobuf字节流,因为socket的tcp通讯中会出现几个很常见的问题,就是粘包和少包。所谓粘包,简单点说就是socket会将多个较小的包合并到一起 ...
分类:
编程语言 时间:
2017-06-10 18:16:21
阅读次数:
370
上述代码是忽略了错误处理后的代码,其中Dlg类的OnReceive方法是给CAsyncSocket的派生类的OnReceive方法调用的(在此之前派生类保存了Dlg类的指针)。 由于是UDP套接字,所以不存在粘包问题,SendTo和RecvFrom的返回值是一样的(说明发送和接收的数据大小一样),那 ...
分类:
其他好文 时间:
2017-06-08 22:31:36
阅读次数:
336
1、什么是粘包/拆包 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据。TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一次接收的数据无法满足消息的需要,导致粘包的存在。处理粘包的唯一方法就是制定应用 ...
分类:
Web程序 时间:
2017-05-27 16:08:48
阅读次数:
648
1)为什么使用SuperSocket? 性能高,易上手。有中文文档,我们可以有更多的时间用在业务逻辑上,SuperSocket有效的利用自己的协议解决粘包 2)SuperSocket的协议内容? 命令 body 列如:TestCommand 1 2 3)怎样在Net下使用 SuperSocket? ...
分类:
Web程序 时间:
2017-05-26 11:55:26
阅读次数:
1196