当我阅读 .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 不 promise 您每次读取返回特定数量的字节。您可以从 1 开始读取任意数量的字节。您的代码必须能够按字节处理接收数据,即使您请求更大的数据 block 并且发送更大的数据 block 也是如此。
最好的解决方法是不使用套接字。使用更高级别的 API,例如 WCF、SignalR、HTTP...
如果您坚持,您可能应该使用 BinaryReader/Writer
来发送您的数据。这使它变得非常容易。
如果您不想要其中的任何一个,您需要循环读取,直到您收到所需的字节数。
关于c# - .Net SslStream 写/读问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37053288/