C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 如何确定何时无法在NetworkStream中读取数据?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Web应用程序,它使用TCP连接连接到服务器并读取二进制文档,然后将其写入其响应对象.换句话说,它使用自定义协议从后端服务器传输文件,并通过http将该文件返回给客户端.

服务器发送状态代码和mime类型,我成功读取,然后写入文件内容关闭套接字.这似乎工作正常.

客户端(C#Web应用程序)读取数据:

@H_419_15@private NetworkStream stream_; public void WriteDocument(httpResponse responsE) { while (stream_.DataAvailablE) { const int bufsize = 4 * 1024; byte[] buffer = new byte[bufsize]; int nbytes = stream_.Read(buffer,bufsizE); if (nbytes > 0) { if (nbytes < bufsizE) Array.Resize<byte>(ref buffer,nbytes); response.binaryWrite(buffer); } } response.End(); }

在所有数据到达之前,这似乎总是退出读取循环.我究竟做错了什么?

解决方法

我会直接使用OutputStream和通用函数.使用Stream,您可以控制Flush.

@H_419_15@public void WriteDocument(httpResponse responsE) { StreamCopy(response.outputStream,stream_); response.End(); } public static void StreamCopy(Stream dest,Stream srC) { byte[] buffer = new byte[4 * 1024]; int n = 1; while (n > 0) { n = src.Read(buffer,buffer.Length); dest.Write(buffer,n); } dest.Flush(); }

大佬总结

以上是大佬教程为你收集整理的c# – 如何确定何时无法在NetworkStream中读取数据?全部内容,希望文章能够帮你解决c# – 如何确定何时无法在NetworkStream中读取数据?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。