C# - 在lan计算机中复制图像文件的最快方法

时间:2015-03-30 13:03:18

标签: c#

我要求读完我的问题直到结束。有人可能会发现它重复。

我有一个Windows应用程序(客户端应用程序)一台机器& Web应用程序(Server App)位于同一网络中的另一台计算机上。 客户端应用程序正在捕获屏幕5fps并保留在共享的本地文件夹中。我有一个在服务器机器上运行的Windows服务。它将客户端映像从客户端共享文件夹移动到服务器目录我正在使用File.Move将文件与FastDirectoryEnumerator类一起移动。这些移动的文件稍后用于创建视频,也用于显示实时流式传输。

问题:

是否有其他(最佳/最快)选项可以实时移动这些文件(在客户端创建后立即传输)? 我也对没有共享文件夹的实时文件传输感兴趣。

更新

我的主要担忧。

  1. 文件传输应该更快,以允许通过我的服务器应用程序(ASP.Net)进行实时流式传输

  2. 如果服务器/连接不可用,客户应保留它。一旦上线就转移。

3 个答案:

答案 0 :(得分:1)

我不知道为什么你有服务器监控客户端的共享,当然这个监控或者说,DirectoryEnumerator程序需要时间。

由于客户端知道图像何时被捕获,为什么不立即从客户端将此信息发送到服务器?通过这种方式,您不需要从服务器监视客户端,您不需要查找/枚举文件夹,只需将数据从客户端传输到服务器,只需通过特定的WCF / Web服务调用即可将数据从客户端传输到服务器。字节作为输入。

答案 1 :(得分:0)

如果您无法控制创建图像文件的客户端应用程序,则可以在客户端计算机上运行FileSystemWatcher。添加一个事件处理程序,只要在文件系统上创建文件而引发Created事件,就会调用该事件处理程序。

请参阅https://stackoverflow.com/a/15018082/1730317

答案 2 :(得分:0)

在这类活动中获得最佳表现时需要考虑的事项。

  • 对于“实时”通知,您可能需要查看FileSystemWatcher课程。有关完整示例,请参阅文档。但是,当操作系统忙时,它将丢弃其中一些事件,并且不会通知您新文件。编程一个扫描循环是一个好主意,确保你拥有所有文件,我在过去一直被这个文件所困扰。

  • 您可能需要检查硬件配置,例如PC和服务器之间的网络延迟,以及PC和服务器上的磁盘速度。低规格SSD可能在旋转磁盘上的这些操作中具有很大的性能优势。