socket收包会出现这种情况吗 包是这样的 ([126 1 126 ],[126 2 126], [126 3],[126 4 126])整个收到的包会出现这种情况吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在传输过程中肯定不会出现你这种情况UDP是整包传输的,肯定不会偷懒TCP更加不可能出现这种情况唯一的解释就是:你处理出错了 给每一段数据前面加上BitConverter.GetBytes(data.Length)的4个字节的数据表示这一段数据的长度然后读取的时候byte[] buffer = 缓冲;int current = 0;int length = 接收的长度;while(current < length){ //当前位置小于接收长度,意味着后面还有数据 //下一段数据的长度 int dataLength = BitCoverter.ToInt32(buffer.Skip(current).Take(4).ToArray(),0); //获取这段数据 byte[] data = buffer.Skip(current+4).Take(dataLength).ToArray(); //当前位置+4+数据长度 current+=4+dataLength; //处理这一段数据的代码 ....*****.... } c#用serialport读数据就死啊,怎么办 datagridview如何在最后加上统计 求助:新浪首页的" 选择去向"下拉框 ,有知道怎么实现的么? C# 中如何处理C++中的句柄呢? 一个自定义组件的问题 超市结帐软件 关于在VS.NET2005中,从视图更新到数据源 问一个名字空间的初级问题 请问高手,C#可不可以直接生成本地代码??? C#access导出到execl!~~~ 参数无效 c#里怎么获取鼠标点击的窗体里句柄啊?
UDP是整包传输的,肯定不会偷懒
TCP更加不可能出现这种情况
唯一的解释就是:你处理出错了
表示这一段数据的长度
然后读取的时候
byte[] buffer = 缓冲;
int current = 0;
int length = 接收的长度;
while(current < length)
{
//当前位置小于接收长度,意味着后面还有数据
//下一段数据的长度
int dataLength = BitCoverter.ToInt32(buffer.Skip(current).Take(4).ToArray(),0);
//获取这段数据
byte[] data = buffer.Skip(current+4).Take(dataLength).ToArray();
//当前位置+4+数据长度
current+=4+dataLength;
//处理这一段数据的代码
....*****....
}