当使用SSLStream到数据的“大”的块(1微克)发送到(已经认证)客户端,分组分段/ dissasembly我看到是FAR使用正常的NetworkStream当大于。
在客户端上使用异步读取(即的BeginRead()),该ReadCallback反复与准确的数据相同大小的块 ,直到最后的数据包(该数据的其余部分)调用。 随着我送(这是一个zip文件)的数据,该段正好是16363个字节长。 注 :我的接收缓冲区比这大得多,改变它的大小没有任何影响
据我所知,SSL加密的数据块不超过18Kb的大,但由于SSL位于TCP之上,我不认为SSL块的数目不会有什么相关性的TCP数据包不成?
从本质上讲,数据需要大约20倍更长的时间才能被客户端比标准的NetworkStream充分阅读(包括本地主机上!)
我在想什么?
编辑:
我开始怀疑接收(或发送)缓冲区大小的SSLStream是有限的。 即使我使用同步读取(即SSLStream.Read()),没有更多的数据永远可用,无论我尝试读取之前等待多长时间。 这将是相同的行为,如果我要限制接收缓冲区16363个字节。 设置相关资产的NetworkStream的SendBufferSize(在服务器上),并ReceiveBufferSize(客户端)没有任何影响。