问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C# NetworkStream异步读数据怎么知道已经读完了?

发布网友 发布时间:2022-05-13 01:50

我来回答

3个回答

热心网友 时间:2023-11-07 21:58

面的情况,我们就可以定义这样一个协议:

[length=XXX]:其中xxx是实际发送的字符串长度(注意不是字节数组buffer的长度),那么对于上面的请求,则我们发送的数据为:“[length=4] adc!”。而服务端接收字符串之后,首先读取这个“元数据”的内容,然后再根据“元数据”内容来读取实际的数据

“[“”]”中括号是完整的,可以读取到length的字节数。然后根据这个数值与后面的字符串长度相比,如果相等,则说明发来了一条完整信息;如果多了,那么说明接收的字节数多了,取出合适的长度,并将剩余的进行缓存;如果少了,说明接收的不够,那么将收到的进行一个缓存,等待下次请求,然后将两条合并。

“[”“]”中括号本身就不完整,此时读不到length的值,因为中括号里的内容被截断了,那么将读到的数据进行缓存,等待读取下次发送来的数据,然后将两次合并之后再按上面的方式进行处理。

循环读取所以信息可以这样写:


string  temp="";
 int bytesRead =clientStream.Read(buffer, 0,MAX_LENGTH) 
while(bytesRead>0)
{
temp+=Encoding.UTF8.GetString(buffer, 0, bytesRead);
}

 //temp到这里是客户发送的全部信息。

当然你用异步可以定义一个全局变量 temp来完成或设置足够大的缓存。

当接收完成后。就要用上面所以的元数据来分解信息了(因为存在合并的信息)。

热心网友 时间:2023-11-07 21:59

参数里面加个(不变的)文件大小,每次接收端写缓存后比较其大小,如果相等接收完了。

热心网友 时间:2023-11-07 21:59

TCP传输,上层协议必须自己解析网络包,组包粘包都要自己做。
一般我们会在协议开头带上整个上层协议整包长度,然后在后续数据收到足够多的数据后自行反序化成自己的协议包。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在线条形码生成 ie地址栏是什么 ie浏览器的官网地址是什么? 团餐定制电话 抖音电商与广东商务厅启动“富域计划” 简单的晚餐晒美食文案句子 简单的晚餐晒美食说说短句 鸭肉炒什么好吃家常做法 为什么越背越记不住 绯牡丹锦多久浇水 绯牡丹养护要点 陈阿娇、卫子夫都是汉武帝的皇后,那她们两个谁的皇后生活更悲惨? C#networkstream.Flush的问题 C# NetWorkStream对象内容怎么清空? C#关于NetworkStream C#NetWorkStream对象内容怎么清空 C#用同步方式怎样从网络流(NetworkStream)中读取数据? c# networkstream循环写的方法 C#中NetworkStream是否可以在不任何锁或判断的情况下,在两个线程中分别执行读操作和写操作? 半年没有夫妻生活是不是可以离婚 女人半年多没性生活了 半年没有夫妻生活对女人有什么影响 夫妻半年没有性生活能界定为感情破裂吗 我和老公半年多没在一起生活这样会影响夫妻生活么? 夫妻结婚半年.这半年之内没有性生活我真的很累. 结婚半年三四天没有夫妻生活正常吗 和老公半年没有夫妻生活,正常么 结婚半年从来没有性生活,这样的夫妻还过得下去吗? 理正软件计算结果无法显示公式,该如何处理 为什么我的工程勘察理正软件可以打开,但输数据用不了? 理正软件中,本单位土工试验转换成理正勘察如何接口? 汉武帝为什么抛弃了阿娇,娶了平民女子卫子夫? 使用C# 的 NetworkStream 无法将数据写入传输连接: 由于系统缓冲区空间不足或列队已满,不能 行巫蛊之术的卫子夫和陈阿娇分别有什么样的下场? 卫子夫和陈阿娇有过节,卫子夫手握大权后,为何不杀了这个宿敌? C#中networkstream和TcpClient.GetStream问题 为何卫子夫性情温和,不被世人喜爱,陈阿娇泼辣蛮横,却备受追捧? 关于c#关于文件传输问题,NetWorkstream问题。求大神,超高分求助 陈阿娇和卫子夫都用了巫蛊之术,为何结局截然不同? C Sharp NetWorkStream对象内容怎么清空? 汉武帝对原配陈阿娇是否有真情?卫子夫是如何当上皇后的? C#编程,用NetworkStream传输文件,如何解决数据丢失问题?请教! 卫子夫为啥不把被废的阿娇杀掉,反而让她享受皇后待遇? C#networkstream.beginread与endread的问题 卫子夫得势后,为什么放过了自己的情敌陈阿娇? C#中NetworkStream.Read(_buffer, 0, 4096);中4096与可以动态吗? 阿娇是刘彻的第一个妃子,为何最后是卫子夫当上了皇后? 在C#套接字,我怎么能异步通过的NetworkStream读取和写入数据 卫子夫和陈阿娇同为废后,为何前者被杀而后在冷宫享受同皇后待遇? 卫子夫也算是奇女子,她得势后为何不敢杀陈阿娇? C#为啥NetworkStream.Read 没有返回0呢?