- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Socket开发之讯协议及处理
Socket开发之通讯协议及处理? 在Socket应用开发中,还有一个话题是讨论的比较多的,那就是数据接收后如何处理的问题。这也是一个令刚接触Socket开发的人很头疼的问题。因为Socket的TCP通讯中有一个“粘包”的现象,既:大多数时候发送端多次发送的小数据包会被连在一起被接收端同时接收到,多个小包被组成一个大包被接收。有时候一个大数据包又会被拆成多个小数据包发送。这样就存在一个将数据包拆分和重新组合的问题。那么如何去处理这个问题呢?这就是我今天要讲的通讯协议。所谓的协议就是通讯双方协商并制定好要传送的数据的结构与格式。并按制定好的格式去组合与分析数据。从而使数据得以被准确的理解和处理。那么我们如何去制定通讯协议呢?很简单,就是指定数据中各个字节所代表的意义。比如说:第一位代表封包头,第二位代表封类型,第三、四位代表封包的数据长度。然后后面是实际的数据内容。如下面这个例子:010106 0001 0f ef 87 56 34协议类别协议代码数据长度实际数据前面三部分称之为封包头,它的长度是固定的,第四部分是封包数据,它的长度是不固定的,由第三部分标识其长度。因为我们的协议将用在TCP中,所以我没有加入校验位。原因是TCP可以保证数据的完整性。校验位是没有必要存在的。接下来我们要为这个数据封包声明一个类来封装它:Code?1????public?class?Message?2????{?3????????private?byte?_class;?4????????private?byte?_flag;?5????????private?int?_size;?6????????private?byte[]?_content;?7?8????????public?byte[]?Content?9????????{10????????????get?{?return?_content;?}11????????????set?{?_content?=?value;?}12????????}1314????????public?int?Size15????????{16????????????get?{?return?_size;?}17????????????set?{?_size?=?value;?}18????????}1920????????public?byte?Flag21????????{22????????????get?{?return?_flag;?}23????????????set?{?_flag?=?value;?}24????????}2526????????public?byte?Class27????????{28????????????get?{?return?_class;?}29????????????set?{?_class?=?value;?}30????????}3132????????public?Message()33????????{3435????????}3637????????public?Message(byte?@class,?byte?flag,?byte[]?content)38????????{39????????????_class?=?@class;40????????????_flag?=?flag;41????????????_size?=?content.Length;42????????????_content?=?content;43????????}4445????????public?byte[]?ToBytes()46????????{47????????????byte[]?_byte;48????????????using?(MemoryStream?mem?=?new?MemoryStream())49????????????{50????????????????BinaryWriter?writer?=?new?BinaryWriter(mem);51????????????????writer.Write(_class);52????????????????writer.Write(_flag);53????????????????writer.Write(_size);54????????????????if?(_size??0)55????????????????{56????????????????????writer.Write(_content);57????????????????}58????????????????_byte?=?mem.ToArray();59????????????????writer.Close();
您可能关注的文档
- REACH-ROH-CA65 三对标准对照.doc
- REACH指令RECH检测方法REACH标准.doc
- RedHat Liux下配置管理Apache服务器.doc
- RedHat Liux下配置管理FTP服务器.doc
- Redis学习笔记理 java例子.doc
- Review Unts 1 and 2 Book 4.doc
- RE文件管理器·修系统文件后修改权限教程.doc
- RE文件管理器中文脑版使用教程.doc
- RE管理器删除系统件操作方法.doc
- RF-X-QC7X-X进料检测管理办法.doc
- Solaris 9sparc 64-bit系统及oracle安装.doc
- SolidWork 基础建模_03.基本零件建模.doc
- solidwork2008及有限元分析视频教程(有声视教).doc
- SolidWork草绘特征和放置特征操作.doc
- SOP-013- ensile grab.doc
- SOP-EOP2406 水处理设备标准操作规程.doc
- SOP-QA-00 D 来料检验作业指导书 Incoming Inspection Work Instruction.doc
- SOP-QA-01质量风险管理规程.doc
- SOP-QM-20-02 滴定液的配制与标定标准操作规程.doc
- SOP-QM-20-03 缓冲液配制标准操作规程.doc
文档评论(0)