从套接字接收数据的C#性能方法?

Dan*_*iel 5 c# sockets performance

假设我们有一个简单的互联网套接字,它将发送随机数据的10兆字节(因为我想忽略内存问题).是否应该使用任何性能差异或最佳实践方法来接收数据?最终输出数据应由byte []表示.是的我知道向内存写入任意数量的数据是不好的,如果我下载一个大文件,我就不会这样做了.但是出于论证的缘故,让我们忽略它,并假设它是一个少量的数据.我也意识到这里的瓶颈可能不是内存管理而是套接字接收.我只是想知道什么是最有效的接收数据的方法.

一些狡猾的方式可以想到的是:

  1. 有一个List和一个缓冲区,在缓冲区已满后,将它添加到列表和结尾list.ToArray()以获取byte []

  2. 在完成构造stream.Length的byte []之后将缓冲区写入内存流,并将其全部读入其中以获取byte []输出.

有没有更有效/更好的方法来做到这一点?

Jon*_*eet 3

只需写入 aMemoryStream然后调用ToArray- 它会为您构建适当大小的字节数组。无论如何,这实际上List<byte>就是 a 的样子,但是使用 aMemoryStream会简单得多。