管道传输大数据

时间:2015-08-08 17:12:30

标签: c# .net pipe named-pipes data-transfer

当我尝试使用NamedPipeServerStream类对象通过调用Write()方法传输1GB数据时会发生什么?特别是如果客户没有立即使用数据。数据在哪里?

使用管道传输大量数据的好方法是什么?将它拆分成更小的块并实现一些通信协议?

管道有更好的替代品吗?我想避免写入硬盘。

1 个答案:

答案 0 :(得分:1)

您可以将内存映射文件用于这些事情。它们对IPC非常有效。请参阅here

我假设你的进程在同一台机器内进行通信。

编辑:或者你可以选择插座。

编辑:我有一些使用命名管道的实现,并且不是很稳定,所以我放弃了它,切换到内存映射文件。如果你仍然希望坚持使用命名管道,你可以将你的负载分成块,这些块可以通过带有一些相关信息的头部(如块大小,块索引,总块数等等)来预先设置,然后期望在写下一个块之前从客户端确认。