c#下多线程的tcp粘包问题,请高手指点思路。 [问题点数:60分,结帖人wwwww112233]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs1
本版专家分:37
结帖率 78.95%
Bbs11
本版专家分:219782
版主
Blank
签到新秀 累计签到获取,不积跬步,无以至千里,继续坚持!
Blank
名人 2019年 荣获名人称号
2013年 荣获名人称号
Blank
状元 2012年 总版技术专家分年内排行榜第一
Blank
进士 2013年 总版技术专家分年内排行榜第七
2011年 总版技术专家分年内排行榜第五
2009年 总版技术专家分年内排行榜第九
Bbs6
本版专家分:7151
Bbs9
本版专家分:82866
Blank
蓝花 2008年5月 .NET技术大版内专家分月排行榜第三
Bbs2
本版专家分:106
Bbs9
本版专家分:88671
Blank
金牌 2015年2月 总版技术专家分月排行榜第一
2015年1月 总版技术专家分月排行榜第一
Blank
银牌 2015年3月 总版技术专家分月排行榜第二
2014年12月 总版技术专家分月排行榜第二
2014年9月 总版技术专家分月排行榜第二
Blank
红花 2015年3月 .NET技术大版内专家分月排行榜第一
2015年2月 .NET技术大版内专家分月排行榜第一
2015年1月 .NET技术大版内专家分月排行榜第一
2014年12月 .NET技术大版内专家分月排行榜第一
2014年11月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2015年7月 .NET技术大版内专家分月排行榜第二
2015年6月 .NET技术大版内专家分月排行榜第二
2015年5月 .NET技术大版内专家分月排行榜第二
2014年10月 .NET技术大版内专家分月排行榜第二
2014年9月 .NET技术大版内专家分月排行榜第二
2014年8月 .NET技术大版内专家分月排行榜第二
Bbs6
本版专家分:5189
Bbs6
本版专家分:5189
Bbs2
本版专家分:119
Bbs9
本版专家分:88671
Blank
金牌 2015年2月 总版技术专家分月排行榜第一
2015年1月 总版技术专家分月排行榜第一
Blank
银牌 2015年3月 总版技术专家分月排行榜第二
2014年12月 总版技术专家分月排行榜第二
2014年9月 总版技术专家分月排行榜第二
Blank
红花 2015年3月 .NET技术大版内专家分月排行榜第一
2015年2月 .NET技术大版内专家分月排行榜第一
2015年1月 .NET技术大版内专家分月排行榜第一
2014年12月 .NET技术大版内专家分月排行榜第一
2014年11月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2015年7月 .NET技术大版内专家分月排行榜第二
2015年6月 .NET技术大版内专家分月排行榜第二
2015年5月 .NET技术大版内专家分月排行榜第二
2014年10月 .NET技术大版内专家分月排行榜第二
2014年9月 .NET技术大版内专家分月排行榜第二
2014年8月 .NET技术大版内专家分月排行榜第二
Bbs2
本版专家分:106
Bbs2
本版专家分:106
Bbs2
本版专家分:106
Bbs6
本版专家分:6430
Bbs1
本版专家分:37
Bbs1
本版专家分:37
Bbs1
本版专家分:37
Bbs6
本版专家分:5189
Bbs1
本版专家分:37
Bbs1
本版专家分:37
Bbs7
本版专家分:17319
Blank
蓝花 2016年3月 移动开发大版内专家分月排行榜第三
Bbs12
本版专家分:469825
Blank
进士 2018年总版新获得的技术专家分排名前十
2017年 总版技术专家分年内排行榜第十
2013年 总版技术专家分年内排行榜第八
Blank
铜牌 2018年12月 总版技术专家分月排行榜第三
2018年11月 总版技术专家分月排行榜第三
2017年2月 总版技术专家分月排行榜第三
Blank
红花 2019年1月 .NET技术大版内专家分月排行榜第一
2018年12月 .NET技术大版内专家分月排行榜第一
2018年11月 .NET技术大版内专家分月排行榜第一
2018年10月 .NET技术大版内专家分月排行榜第一
2018年9月 .NET技术大版内专家分月排行榜第一
2018年7月 .NET技术大版内专家分月排行榜第一
2018年6月 .NET技术大版内专家分月排行榜第一
2018年1月 .NET技术大版内专家分月排行榜第一
2017年5月 .NET技术大版内专家分月排行榜第一
2017年4月 .NET技术大版内专家分月排行榜第一
2017年3月 .NET技术大版内专家分月排行榜第一
2017年2月 .NET技术大版内专家分月排行榜第一
2016年10月 .NET技术大版内专家分月排行榜第一
2016年8月 .NET技术大版内专家分月排行榜第一
2016年7月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2019年4月 .NET技术大版内专家分月排行榜第二
2019年3月 .NET技术大版内专家分月排行榜第二
2018年8月 .NET技术大版内专家分月排行榜第二
2018年4月 .NET技术大版内专家分月排行榜第二
2018年3月 .NET技术大版内专家分月排行榜第二
2017年12月 .NET技术大版内专家分月排行榜第二
2017年9月 .NET技术大版内专家分月排行榜第二
2017年7月 .NET技术大版内专家分月排行榜第二
2017年6月 .NET技术大版内专家分月排行榜第二
2016年12月 .NET技术大版内专家分月排行榜第二
2016年9月 .NET技术大版内专家分月排行榜第二
2016年6月 .NET技术大版内专家分月排行榜第二
2016年3月 .NET技术大版内专家分月排行榜第二
2016年1月 .NET技术大版内专家分月排行榜第二
2015年12月 .NET技术大版内专家分月排行榜第二
2015年2月 .NET技术大版内专家分月排行榜第二
2015年1月 .NET技术大版内专家分月排行榜第二
2014年11月 .NET技术大版内专家分月排行榜第二
2014年5月 .NET技术大版内专家分月排行榜第二
2014年4月 .NET技术大版内专家分月排行榜第二
2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
Bbs12
本版专家分:469825
Blank
进士 2018年总版新获得的技术专家分排名前十
2017年 总版技术专家分年内排行榜第十
2013年 总版技术专家分年内排行榜第八
Blank
铜牌 2018年12月 总版技术专家分月排行榜第三
2018年11月 总版技术专家分月排行榜第三
2017年2月 总版技术专家分月排行榜第三
Blank
红花 2019年1月 .NET技术大版内专家分月排行榜第一
2018年12月 .NET技术大版内专家分月排行榜第一
2018年11月 .NET技术大版内专家分月排行榜第一
2018年10月 .NET技术大版内专家分月排行榜第一
2018年9月 .NET技术大版内专家分月排行榜第一
2018年7月 .NET技术大版内专家分月排行榜第一
2018年6月 .NET技术大版内专家分月排行榜第一
2018年1月 .NET技术大版内专家分月排行榜第一
2017年5月 .NET技术大版内专家分月排行榜第一
2017年4月 .NET技术大版内专家分月排行榜第一
2017年3月 .NET技术大版内专家分月排行榜第一
2017年2月 .NET技术大版内专家分月排行榜第一
2016年10月 .NET技术大版内专家分月排行榜第一
2016年8月 .NET技术大版内专家分月排行榜第一
2016年7月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2019年4月 .NET技术大版内专家分月排行榜第二
2019年3月 .NET技术大版内专家分月排行榜第二
2018年8月 .NET技术大版内专家分月排行榜第二
2018年4月 .NET技术大版内专家分月排行榜第二
2018年3月 .NET技术大版内专家分月排行榜第二
2017年12月 .NET技术大版内专家分月排行榜第二
2017年9月 .NET技术大版内专家分月排行榜第二
2017年7月 .NET技术大版内专家分月排行榜第二
2017年6月 .NET技术大版内专家分月排行榜第二
2016年12月 .NET技术大版内专家分月排行榜第二
2016年9月 .NET技术大版内专家分月排行榜第二
2016年6月 .NET技术大版内专家分月排行榜第二
2016年3月 .NET技术大版内专家分月排行榜第二
2016年1月 .NET技术大版内专家分月排行榜第二
2015年12月 .NET技术大版内专家分月排行榜第二
2015年2月 .NET技术大版内专家分月排行榜第二
2015年1月 .NET技术大版内专家分月排行榜第二
2014年11月 .NET技术大版内专家分月排行榜第二
2014年5月 .NET技术大版内专家分月排行榜第二
2014年4月 .NET技术大版内专家分月排行榜第二
2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
Bbs12
本版专家分:469825
Blank
进士 2018年总版新获得的技术专家分排名前十
2017年 总版技术专家分年内排行榜第十
2013年 总版技术专家分年内排行榜第八
Blank
铜牌 2018年12月 总版技术专家分月排行榜第三
2018年11月 总版技术专家分月排行榜第三
2017年2月 总版技术专家分月排行榜第三
Blank
红花 2019年1月 .NET技术大版内专家分月排行榜第一
2018年12月 .NET技术大版内专家分月排行榜第一
2018年11月 .NET技术大版内专家分月排行榜第一
2018年10月 .NET技术大版内专家分月排行榜第一
2018年9月 .NET技术大版内专家分月排行榜第一
2018年7月 .NET技术大版内专家分月排行榜第一
2018年6月 .NET技术大版内专家分月排行榜第一
2018年1月 .NET技术大版内专家分月排行榜第一
2017年5月 .NET技术大版内专家分月排行榜第一
2017年4月 .NET技术大版内专家分月排行榜第一
2017年3月 .NET技术大版内专家分月排行榜第一
2017年2月 .NET技术大版内专家分月排行榜第一
2016年10月 .NET技术大版内专家分月排行榜第一
2016年8月 .NET技术大版内专家分月排行榜第一
2016年7月 .NET技术大版内专家分月排行榜第一
Blank
黄花 2019年4月 .NET技术大版内专家分月排行榜第二
2019年3月 .NET技术大版内专家分月排行榜第二
2018年8月 .NET技术大版内专家分月排行榜第二
2018年4月 .NET技术大版内专家分月排行榜第二
2018年3月 .NET技术大版内专家分月排行榜第二
2017年12月 .NET技术大版内专家分月排行榜第二
2017年9月 .NET技术大版内专家分月排行榜第二
2017年7月 .NET技术大版内专家分月排行榜第二
2017年6月 .NET技术大版内专家分月排行榜第二
2016年12月 .NET技术大版内专家分月排行榜第二
2016年9月 .NET技术大版内专家分月排行榜第二
2016年6月 .NET技术大版内专家分月排行榜第二
2016年3月 .NET技术大版内专家分月排行榜第二
2016年1月 .NET技术大版内专家分月排行榜第二
2015年12月 .NET技术大版内专家分月排行榜第二
2015年2月 .NET技术大版内专家分月排行榜第二
2015年1月 .NET技术大版内专家分月排行榜第二
2014年11月 .NET技术大版内专家分月排行榜第二
2014年5月 .NET技术大版内专家分月排行榜第二
2014年4月 .NET技术大版内专家分月排行榜第二
2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
Bbs4
本版专家分:1330
Bbs9
本版专家分:82866
Blank
蓝花 2008年5月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:37
C# TCP网络编程5(分二)
一:TCP<em>粘</em><em>包</em>产生的原理 1,TCP<em>粘</em><em>包</em>是指发送方发送的若干<em>包</em>数据到接收方接收时<em>粘</em>成一<em>包</em>,从接收缓冲区看,后一<em>包</em>数据的头紧接着前一<em>包</em>数据的尾。出现<em>粘</em><em>包</em>现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。 2,发送方引起的<em>粘</em><em>包</em>是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一<em>包</em>数据。若连续几次发送的数据都很少,通常TCP会根据优化算法把这些数据合成一...
C#高性能大容量SOCKET并发(五):、分、解
使用TCP长连接就会引入<em>粘</em><em>包</em>的<em>问题</em>,<em>粘</em><em>包</em>是指发送方发送的若干<em>包</em>数据到接收方接收时<em>粘</em>成一<em>包</em>,从接收缓冲区看,后一<em>包</em>数据的头紧接着前一<em>包</em>数据的尾。<em>粘</em><em>包</em>可能由发送方造成,也可能由接收方造成。TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一<em>包</em>数据,造成多个数据<em>包</em>的<em>粘</em>连。如果接收进程不及时接收数据,已收到的数据就放在系统接收缓冲区,用户进程读取数据时就可能同时读到多个数据<em>包</em>。 <em>粘</em><em>包</em>一般的解决办法是制定通讯协议,由协议来规定如何分<em>包</em>解<em>包</em>,因此在Scoket编程中需要定义分<em>包</em>、解<em>包</em>的逻辑。
c# socket tcp 接收到的内容乱了
实在找不出bug,只好来求助大佬们了。 情况是这样的,我的服务器每天大约能收到好几个内容错了的<em>包</em>,这几个<em>包</em>错得都很有规律。 比如客户端发送过来的内容为AAAABBBBCCCCDDDD 结果如下代码接收
TCP的问题如何解决?
TCP的<em>粘</em><em>包</em><em>问题</em>如何解决?
C# TCP数据的接收
我利用DSP中的串口向外发送8比特的数据,并且该串口是和USR-WIFI232连接在一起的(WIFI232 系列产品用于实现串口到WIFI 数据<em>包</em>的双向透明转发,用户无需关心具体细节,模块内部完成协议
Socket学习之解决TCP半问题
<em>问题</em>产生 TCP是一个数据流协议,所以TCP发送的数据<em>包</em>大小是不可控制的,这时候就会出现<em>粘</em><em>包</em>和半<em>包</em>的现象,下面这张图是我从网上找的,描述很形象 1. 情况1,Data1和Data2都分开发送到了Server端,没有产生<em>粘</em><em>包</em>和拆<em>包</em>的情况。 2. 情况2,Data1和Data2数据<em>粘</em>在了一起,打成了一个大的<em>包</em>发送到Server端,这个情况就是<em>粘</em><em>包</em>。 3. 情况3,D
[急问高手] TCP连接时CSocket问题的解决方法?
发送时: m_ClientSocket.Send((&struct_Ecc),sizeof(struct_Ecc),0); 接收时: Receive(buffer,BUFFER_SIZE,0); //
TCP问题
TCP出现<em>粘</em><em>包</em><em>问题</em>,有好几种解决方法,比如:<em>tcp</em> push设置,结束符,固定长度等,但<em>请</em>问其中的<em>tcp</em> push设置是怎么实现的?
Unity C# 自定义TCP传输协议以及封、解决问题(网络应用层协议)
本文只是初步实现了一个简单的TCP自定协议,更为复杂的协议可以根据这种方式去扩展,并且我已经假定你搭建好了一个最为基本的socket TCP通信框架,本文就不对其做过多的讲解了,当然如果你不了解socket的TCP通信的话,可以去看一下我的另一篇博客: Unity Socket TCP 好了,接下来开始进入正题: 第一:自定义TCP传输协议以及封<em>包</em> TCP协议一般的格式都是消息头+消息
使用c# tcp连续发送短数据时发生连
使用<em>c#</em>编写的<em>tcp</em>同步通讯,服务端需要连续发送80条短数据给客户端,但是捕捉端口时发现发送的数据并不是: 数据1 数据2 数据3 而是:数据1数据2数据3这样连在一起的。一般可以通过客户端接收时处理
TCP /拆说明 及 异常案例
目录 TCP <em>粘</em><em>包</em>/ 拆<em>包</em> 异常案例 一百个客户端各发一条 一百个客户端发一百条 TCP <em>粘</em><em>包</em>/ 拆<em>包</em> TCP 是个“流”协议,所谓流,就是没有界限的一串数据,可以想象河里的流水连成一片,其间并没有分界线 TCP 底层并不了解上层业务数据的具体含义,它会根据 TCP 缓冲区的实际情况进行<em>包</em>的划分,业务上认为,一个完整的<em>包</em>可能会被 TCP 拆分为多个<em>包</em>,也可能把多个小的<em>包</em>封装成一个...
c# Socket通讯中关于,半的处理,加分割符
using System; using System.Collections.Generic; using System.Text; using System.Net.Sockets; using System.Threading; namespace EventBase { /*解决Socket的<em>粘</em><em>包</em>处理 使用方法 A2DTcpC...
经过一年时间的沉淀 再次回首 TCP Socket服务器编程
------------------ 前言 ------------------ 开发了这么多年,发现最困难的程序开发就是通讯系统。 其他大部分系统,例如CRM/CMS/权限框架/MIS之类的,无论怎么复杂,基本上都能够本地代码本地调试,性能也不太重要。(也许这个就是.net的企业级开发的战略吧) 可是来到通讯系统,一切变得困难复杂。原因实在太多了,如: 性能永远...
C# Socket
服务端定义数据缓冲区buffer[1024],
异步SOCKET接收问题-100分
基于TCP异步SOCKET服务端与客户端程序: 服务端循环分<em>包</em>发送每次<em>包</em>大小为 4906 字节 客户端异步BEGINRECEIVE接收 const int BagSize = 8192 private
C# Socket.Receive 得到的数据,都是一个或多个完整的tcp吗?
使用public int Receive(byte buffer) 接收数据<em>包</em>,假如现在Socket中有3个100大小的<em>包</em>,而我的buffer 大小是250,那么buffer读取的数据大小,是2个<em>包</em>的
Socket 异步接收如何处理
如代码所示,采用BeginReceive 进行异步接收,但对方服务器发送过来的可能存在<em>粘</em><em>包</em>或超过单次我这边缓冲接收的1024字节情况,那么如何进行处理接收全部正确的<em>包</em>后然后再进行调用action方法进
C# TCP通信 异步Socket 长时间接受数据时出现数据不完整
实现客户端与服务器相互异步通信,不知道为什么长时间通信后,服务器接收的数据大部分都是不完整的: 重启服务器后又恢复正常接收: 部分代码: public class StateObject { publ
TCP问题分析和解决(全)
TCP通信<em>粘</em><em>包</em><em>问题</em>分析和解决(全) 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的<em>包</em>,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小、数据量小的数据,合并成一个大的数据块,然后进行封<em>包</em>。这样,接收端,就难于分辨出来了,必须提供科学的拆<em>包</em>
Socket通用TCP通信协议设计及实现(防止,可移植,可靠)
我们接收Socket字节流数据一般都会定义一个数据<em>包</em>协议。我们每次开发一个软件的通信模块时,尽管具体的数据内容是不尽相同的,但是大体上的框架,以及常用的一些函数比如转码,校验等等都是相似甚至一样的。所以我感觉设计一个通用的通信协议,可以在之后的开发中进行移植实现高效率的开发是很有必要的。另外,本协议结合我自己所了解的通信知识尽可能的提升了可靠性和移植性,可处理类似<em>粘</em><em>包</em>这样的<em>问题</em>。对于本文中可能存在的<em>问题</em>,欢迎各位大神多多<em>指点</em>。
TCP和UDP的“保护消息边界”(、半
TCP是面向连接,面向流的(有可能会出项<em>粘</em><em>包</em>情况),提供高可靠服务性。因此TCP,使用了优化方法,将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封<em>包</em>。这样,接收端收到的二进制流可能会被切开或者合并的,必须提供科学的拆<em>包</em>机制。 UDP是面向非连接,会保证消息的保护边界,不会使用块的合并优化算法,这样,实际上目前认为,是由于UDP支持的是一对多的模式,所以接收端的skbuff(
socket04---流协议和问题及解决
首先来说说什么是流协议和<em>粘</em><em>包</em><em>问题</em>:之前我们写的那几篇都是基于TCP传输协议的socket通信,而我们知道TCP传输数据是基于STREAM流的,什么意思呢?这么说吧,TCP在传输数据的时候,是不区分边界的(数据和数据之间没有边界),因为是基于字节流,所以数据对TCP来说就是一大堆没有结构区别的字节块。那意味着什么?意味着TCP并不能对多个数据的整体的信息进行区分(打个比方:就像是你说一堆话没有标点符号
处理Socket数据问题
如果对socket创建还不了解可查看上一篇文章: 利用GCDSocket 创建Socket 处理数据<em>粘</em><em>包</em><em>问题</em><em>思路</em>如下: socket数据就像一个水管,水管的水是一股一股流出来的  (假设数据是有一个一个的字典组成的,字典与字典之前用\n(换行符)区分)  例如:  其中一条数据为: {"key","value"}\n  收到的数据也可能为:  ........  {"
Socket/TCP、多和少, 断
为什么TCP 会<em>粘</em><em>包</em>    前几天,调试mina的TCP通信, 第一个协议<em>包</em>解析正常,第二个数据<em>包</em>不完整。为什么会这样吗,我们用mina这样通信框架,还会出现这种<em>问题</em>? 带者<em>问题</em>,我们先分析一下<em>问题</em>。   提到通信, 我们面临都通信协议,数据协议的选择。 通信协议我们可选择TCP/UDP: TCP(transport control protocol,传输控制协议)是面向连接的,面向
Socket 循环接收消息 (C#)
这两天在向同事学习socket收发消息的<em>问题</em>,学到了新知识,非常感谢 yss 的 hwh 1、对于一次接收到大于接收缓存的消息,并且连续接收消息,两段消息可能同时被接受到一端缓存中,叫<em>粘</em><em>包</em>; 2、收到的消息不足一个接收缓存,交半<em>包</em>; 程序的几个注意点: 1、必须要循环接收消息; 2、消息头必须要有长度标志字节(这里是用的前四个字节来保存实际消息体的长度); 3、除了接收缓存rev...
tcp的产生以及处理
流协议与<em>粘</em><em>包</em> 这么说吧,TCP在传输数据的时候,是不区分边界的(数据和数据之间没有边界),因为是基于字节流,字节流是由字节组成,不<em>包</em>含边界数据的连续流。所以数据对TCP来说就是一大堆没有结构区别的字节块。那意味着什么?意味着TCP并不能对多个数据的整体的信息进行区分(打个比方:就像是你说一堆话没有标点符号全部连在一起,别人很可能弄错)或者对单个整体信息的错误区分(比如你要发送的整块数据被分成...
C# socket 传输工具封装
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using System.Threading.Tasks;namespace AhpilyServ...
C# Socket系列三 socket通信的封和拆
通过系列二 我们已经实现了socket的简单通信 接下来我们测试一下,在时间应用的场景下,我们会快速且大量的传输数据的情况! 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 TCPListener <em>tcp</em> = new TCPListe...
C# TCP解决
完美解决<em>粘</em><em>包</em>!!值不值你说了算
Netty精粹之TCP问题
什么是<em>粘</em><em>包</em>拆<em>包</em>,为什么发生拆<em>包</em><em>粘</em><em>包</em><em>问题</em>,如何处理拆<em>包</em><em>粘</em><em>包</em><em>问题</em>
网络中出现TCP、UDP、分的两点解决办法
<em>粘</em><em>包</em>产生原因: 先说TCP:由于TCP协议本身的机制(面向连接的可靠地协议-三次握手机制)客户端与服务器会维持一个连接(Channel),数据在连接不断开的情况下,可以持续不断地将多个数据<em>包</em>发往服务器,但是如果发送的网络数据<em>包</em>太小,那么他本身会启用Nagle算法(可配置是否启用)对较小的数据<em>包</em>进行合并(基于此,TCP的网络延迟要UDP的高些)然后再发送(超时或者<em>包</em>大小足够)。那么这样的话,服
TCP,拆及解决方法
转自:http://blog.insanecoder.top/<em>tcp</em>-packet-splice-and-split-issue/ 在进行Java NIO学习时,发现,如果客户端连续不断的向服务端发送数据<em>包</em>时,服务端接收的数据会出现两个数据<em>包</em><em>粘</em>在一起的情况,这就是TCP协议中经常会遇到的<em>粘</em><em>包</em>以及拆<em>包</em>的<em>问题</em>。 我们都知道TCP属于传输层的协议,传输层除了有TCP协议外还有UD
转载 Unity C# 自定义TCP传输协议以及封、解决问题
本文只是初步实现了一个简单的TCP自定协议,更为复杂的协议可以根据这种方式去扩展,并且我已经假定你搭建好了一个最为基本的socket TCP通信框架,本文就不对其做过多的讲解了,当然如果你不了解socket的TCP通信的话,可以去看一下我的另一篇博客: Unity Socket TCP 好了,接下来开始进入正题: TCP协议,通俗一点的讲,它是一种基于socket传输的由发送方和接收方事
C#网络编程TCP通信的问题讨论
 第一个需要讨论的大概就是<em>粘</em><em>包</em><em>问题</em>了。因为这个是TCP的个性<em>问题</em>,UDP通信时不存在这个<em>问题</em>的。首先看一下什么叫<em>粘</em><em>包</em>:   客户端采取与服务器的长连接方式建立通信(Open-Write/Read-Write/Read-……-Write/Read-Close)。即建立连接之后进行多次读写操作,最后才关闭。而且不是文件传输,而是数据结构的传输(文件传输发生<em>粘</em><em>包</em>与没发生<em>粘</em><em>包</em>都不会影响结果,反正都是字节流的按顺序写入本地文件)。举个例子来说明一下吧: 两种数据结构:{
TCP新手误区--的处理
TCP新手误区–<em>粘</em><em>包</em>的处理背景最近面试了很多的学生,发现很多TCP的新手对于TCP的使用有一些误区,而这些坑也是当初我曾经疑惑过得地方。网上很少有文章对这些<em>问题</em>有过详细的解析,即是有也只是直接给出结论和做法,没有人将其中的来龙去脉讲解清楚,所以我将这些<em>问题</em>的来龙去脉在这一系列的文章中讲述出来,希望能让广大TCP的新手避开这些坑。<em>问题</em>我面试时经常会问的一个<em>问题</em>是当TCP两端A、B建立了连接后,A端先发
[C#]手把手教你打造Socket的TCP通讯连接(一)
本文章将讲解基于TCP连接的Socket通讯,使用Socket异步功能,并且无<em>粘</em><em>包</em>现象,通过事件驱动使用。 在编写Socket代码之前,我们得要定义一下Socket的基本功能。 作为一个TCP连接,不论是客户端还是服务器端,它都得有以下接口: public interface ISocket { /// &lt;summary&gt; /// 获取是否已连接。 ...
C# TCP 传文件出现问题
客户端代码: IAsyncResult ir = null; IAsyncResult br = null; while (true) { ir = fs1.BeginRead(buffer, 0,
C# 网络编程的分的解决方案
  class Message     {         //发送信息         public byte[] SendData(byte[] message)         {             MemoryStream memoryStream = new MemoryStream();//创建一个内存流             byte[] BagHead = BitCo...
tcp,半处理,两种方法更好些,教各位大侠
第一种是 发送消息之前,将消息打<em>包</em>,<em>包</em>头中添加该消息的字符长度,接收方接受消息之后根据<em>包</em>头字符长度来判定是否是整<em>包</em>。 第二种是 发送消息之前,将消息打<em>包</em>,<em>包</em>头中添加一个标识符,作为每个<em>包</em>开头的标识,<em>包</em>
C# TCP socket发送数据时接收端数据和发送端数据不一致
private void Receive() { byte buff = new byte; var remote = (EndPoint)(new IPEndPoint(IPAddress.Any
C# Socket发送和接收数据问题
假设客户端调用socket.Send发送“123”,然后发送“nmb”。想要的效果是服务器端调用clientSocket.Receive分别接收“123”和“nmb”,可是通过调试发现,服务器端一次性
C# SuperSocket 客户端发送图片 服务端接收问题.
按照文档 和一些资料集成了 服务端SuperSocket 并且可以进行数据传输. 使用的默认的命令行模式 解析器都没改过 用的默认的. 客户端是androidTv. <em>问题</em>是 客户端发送图片流 服务端接收不到,并且客户端连接会被强制断开. 我使用SocketTool测试发现如果发送的数据长度超过一定的长度 可能是supertSocket定义的长度就会被强制断开连接,并且收不到这个流. 另外 如果可以自定义来实现的话,这个流要怎么循环接收? 都需要自定义吗?
TCP Socket文件传输的问题及解决
基于TCP网络传输的应用程序有时会出现<em>粘</em><em>包</em>现象(即发送方发送的若干<em>包</em>数据到接收方接收时<em>粘</em>成一<em>包</em>) TCP<em>粘</em><em>包</em>是指发送方发送的若干<em>包</em>数据到接收方接收时<em>粘</em>成一<em>包</em>,从接收缓冲区看,后一<em>包</em>数据的头紧接着前一<em>包</em>数据的尾。   出现<em>粘</em><em>包</em>现象的原因是多方面的,它既可能由发送方造成,也可能由接收方造成。发送方引起的<em>粘</em><em>包</em>是由TCP协议本身造成的,TCP为提高传输效率,发送方往往要收集到足够多的数据后才发
Socket封、拆
Socket <em>粘</em><em>包</em> 封<em>包</em> 拆<em>包</em>
C#使用Socket简单异步通讯
C#使用SocketAsyncEventArgs操作套接字的简单异步通讯
Unity + Socket + Protobuf+异步+ 之 四
Protobuff是对消息体进行序列化和反序列化的操作。 先建一个消息体文件msg.proto syntax = &amp;amp;amp;amp;amp;quot;proto3&amp;amp;amp;amp;amp;quot;; package com.shapejoy.remotecontrol.proto; enum Event { NULL = 0; HEART = 1; RECONNECTION = 3; DE
一个高性能异步socket封装库的实现思路c#
前言 socket是软件之间通讯最常用的一种方式。<em>c#</em>实现socket通讯有很多中方法,其中效率最高就是异步通讯。 异步通讯实际是利用windows完成端口(IOCP)来处理的,关于完成端口实现原理,大家可以参考网上文章。 我这里想强调的是采用完成端口机制的异步通讯是windows下效率最高的通讯方式,没有之一! 异步通讯比同步通讯处理要难很多,代码编写中会遇到许多“坑“。如果没有经...
C#高性能大容量SOCKET并发(转)
C#高性能大容量SOCKET并发(零):代码结构说明  C#高性能大容量SOCKET并发(一):IOCP完成端口例子介绍 C#高性能大容量SOCKET并发(二):SocketAsyncEventArgs封装 C#高性能大容量SOCKET并发(三):接收、发送 C#高性能大容量SOCKET并发(四):缓存设计 C#高性能大容量SOCKET并发(五):<em>粘</em><em>包</em>、分<em>包</em>、解<em>包</em>  C#高性能大容量S...
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列<em>问题</em> 2.2矩阵系列<em>问题</em> 2.3跳跃系列<em>问题</em> 3.1 01背<em>包</em> 3.2 完全背<em>包</em> 3.3多重背<em>包</em> 3.4 一些变形选讲 2.1斐波那契系列<em>问题</em> 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个<em>问题</em>我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个<em>问题</em>,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决<em>问题</em>的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
【设计模式】单例模式的八种写法分析
网上泛滥流传单例模式的写法种类,有说7种的,也有说6种的,当然也不排除说5种的,他们说的有错吗?其实没有对与错,刨根问底,写法终究是写法,其本质精髓大体一致!因此完全没必要去追究写法的多少,有这个时间还不如跟着宜春去网吧偷耳机、去田里抓青蛙得了,一天天的....
《面试宝典》:检验是否为合格的初中级程序员的面试知识点,你都知道了吗?查漏补缺
欢迎关注文章系列,一起学习 《提升能力,涨薪可待篇》 《面试知识,工作可待篇》 《实战演练,拒绝996篇》 也欢迎关注公 众 号【Ccww笔记】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《面试知识,工作可待篇》-Java笔试面试基础知识大全 前言 是不是感觉找工作面试是那么难呢? 在找工作面试应在学习的基础进行总结面试知识点,工作也指日可待,欢...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
活到老,学到老,程序员也该如此
全文共2763字,预计学习时长8分钟 图片来源:Pixabay 此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。 饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
小白学 Python 爬虫(5):前置准备(四)数据库基础
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 本篇文章,我们接着介绍基础内容,数据库。 爬虫将数据爬取完成后,总要有地方存放吧,这个数据存在哪里呢? ...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
JavaScript 中, 5 种增加代码可读性的最佳实践
作者:Milos Protic 译者:前端小智 来源:blog.risingstack 为了保证的可读性,本文采用意译而非直译。 简介 如果咱们关注代码本身结构及可读笥,而不是只关心它是否能工作,那么咱们写代码是有一定的水准。专业开发人员将为未来的自己和“其他人”编写代码,而不仅仅只编写能应付当前工作的代码。 在此基础上,可读性高的代码可以定义为自解释的、易于人理解的、易于更改...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制<em>粘</em>贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的<em>问题</em>,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
毕业设计(带论文)—试卷生成系统下载
毕业设计(带论文)—试卷生成系统,做的不错,获得了优秀毕业论文。 相关下载链接:[url=//download.csdn.net/download/chenxh/149835?utm_source=bbsseo]//download.csdn.net/download/chenxh/149835?utm_source=bbsseo[/url]
mp3歌词解析项目 数据链表下载
mp3歌词解析项目 数据链表mp3mp3歌词解析项目 数据链表歌词解析项目 数据链表mp3歌词解析项目 数据链表 相关下载链接:[url=//download.csdn.net/download/xiangsilei/2000198?utm_source=bbsseo]//download.csdn.net/download/xiangsilei/2000198?utm_source=bbsseo[/url]
SaliencyMap下载
MSRA1000 Saliency Map 相关下载链接:[url=//download.csdn.net/download/u013112320/6949727?utm_source=bbsseo]//download.csdn.net/download/u013112320/6949727?utm_source=bbsseo[/url]
相关热词 c# id读写器 c#俄罗斯方块源码 c# linq原理 c# 装箱有什么用 c#集合 复制 c# 一个字符串分组 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图
我们是很有底线的