我已经阅读了周围,我听到了关于此的混合信息。您是否必须将文件拆分为 block 才能通过流发送?还是操作系统会为您做到这一点?
我有一个大约 320,000 个值的字节数组,我需要通过网络获取它。我可以得到前几千,但之后的任何东西,它都设置为 0。
我正在使用 NetworkStream 类,创建一个 TcpListener/TcpClient,一旦连接就从监听器获取流并将数组写入流然后刷新。没有成功。
任何帮助,将不胜感激。
干杯,
最佳答案
使用 TCP 套接字时,发送 1024 字节可能会也可能不会被操作系统分成 block 。我们级别的这种行为应该被认为是未定义的,并且接收者应该能够处理这样的情况。大多数协议(protocol)所做的是指定某个(已知)消息大小,其中包含诸如文件大小、应读取的数据范围等信息。服务器构造的每条消息都将具有此 header 。作为程序员,您可以指定您的 block 大小,并且必须在接收器级别重建每个 block 。
这是一个演练:
这个例子很基础,但它是沟通如何工作的一个很好的基础。
关于c# - socket c Sharp 上的大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246354/