编程语言
首页 > 编程语言> > c# – .Net SslStream写/读问题

c# – .Net SslStream写/读问题

作者:互联网

当我读一个.Net SSLStream时,我似乎无法一次性阅读. read方法总是只获取第一个字节.无论数据或缓冲区大小如何,我都需要循环以获取剩余数据.

示例:

客户

var message = new byte[]{1,2,3,4,5};
   sslStream.Write(messsage);
   sslStream.Flush();

服务器

byte[] buffer = new byte[4000];
bytes = sslStream.Read(buffer, 0, buffer.Length);

难道我做错了什么 ?为什么在第一次读取时只读取一个字节?

解决方法:

流式API不保证每次读取返回特定数量的字节.您可以从1开始读取任意数量的字节.即使您要求更大的块,即使您发送了更大的块,您的代码也必须能够按字节顺序处理数据.

最好的解决方法是不使用套接字.使用更高级别的API,例如WCF,SignalR,HTTP,……

如果你坚持你可能应该使用BinaryReader / Writer发送你的数据.这很容易.

如果您不想要任何需要在循环中读取的内容,直到您收到所需的字节数.

标签:c,stream,net,ssl,sslstream
来源: https://codeday.me/bug/20190623/1269168.html