第一个:ECHO,了解基础网络通讯过程也触发事件 第二个:StringDEMO,理解长字符串发送编码过程 第三个:StreamCoderDEMO,理解粘包的理方式,即数据类型+数据长度+数据流 第四个:diocp_utils_demo,理解字符处理函数,快速编程处理字符 第五个:DiocpTask, ...
分类:
其他好文 时间:
2016-09-08 21:46:27
阅读次数:
145
一、socket发送数据基本流程 图示 图示 流程解释 流程解释 流程解释 上述流程,为基本的收发数据流程,并且使用ack来解决粘包问题, 并且,最后通过获取server发送的“get file success”来给予用户友好展示 上述流程,为基本的收发数据流程,并且使用ack来解决粘包问题, 并且 ...
分类:
其他好文 时间:
2016-09-06 14:01:34
阅读次数:
235
ECHOServer代码(不考虑粘包的处理): unit ufrmMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Ac ...
分类:
其他好文 时间:
2016-09-04 22:05:42
阅读次数:
191
什么是粘包问题? 举个例子:sever发送20480 个A字母,可是由于client一次只收到10240个A,余下的又发送一次:第一个包中包括有此数据包的总长度,读取出长度,然后接收一个对比长度,如果当前长度<包标定长度,那么就等余下包,一直等到足够包长度,把他们组合在一起就算接收一个数据包. TC ...
分类:
其他好文 时间:
2016-09-03 22:37:26
阅读次数:
195
之前为了调式和方便一直没有处理粘包的问题,今天专门花了时间来搞NETTY的粘包处理,要知道在高并发下,不处理粘包是不可能的,数据流的混乱会造成业务的崩溃什么的我就不说了。所以这个问题 在我心里一直是个结。 使用NETTY真的很幸福,以前用C写服务端 还的自己处理粘包的问题 各种痛苦 不过那也是基本功 ...
分类:
Web程序 时间:
2016-09-01 01:56:31
阅读次数:
249
游戏类型:ARPG横板格斗过关手机网游,类似王者之剑,DNF。 客户端unity,碰撞判定在客户端,AI和伤害运算在服务端。峰值单服在线2800。 netty,protobuf,mysql。 指令设计不合理,粘包时出现异常 原始设计过于简单,没有指令队列和分类的概念。当粘包指令同时执行时,发生串行指 ...
分类:
其他好文 时间:
2016-08-30 21:16:03
阅读次数:
127
上一篇:【Netty4.X】Unity客户端与Netty服务器的网络通信(一)一、什么是TCP粘包/拆包 如图所示,假如客户端分别发送两个数据包D1和D2给服务端,由于服务端一次读取到的字节数是不确...
分类:
Web程序 时间:
2016-08-25 21:42:47
阅读次数:
498
TCP是个流协议,它存在粘包问题 产生粘包的原因是: TCP所传输的报文段有MSS的限制,如果套接字缓冲区的大小大于MSS,也会导致消息的分割发送。 由于链路层最大发送单元MTU,在IP层会进行数据的分片。 应用层调用write方法,将应用层的缓冲区中的数据拷贝到套接字的发送缓冲区。而发送缓冲区有一 ...
分类:
其他好文 时间:
2016-08-14 22:12:56
阅读次数:
234
在AsynServer中对接收函数增加接收判断,如果收到客户端发送的请求信息,则发送10个测试包给发送端,否则继续接收,修改后的接收代码如下: private void AsynReceive() { byte[] data = new byte[1024];//接收缓存 string receiv ...
分类:
其他好文 时间:
2016-07-23 18:15:25
阅读次数:
157