【问题标题】:How does windows copy files between network locations?windows如何在网络位置之间复制文件?
【发布时间】:2014-08-27 01:29:05
【问题描述】:

假设我打开 Windows 资源管理器并将文件从网络共享文件夹 \S1 拖到另一个网络共享文件夹 \S2。

文件的字节是否通过我当前使用的计算机进行传输?

我正在编写一个简单的 C# 程序来在存储位置之间复制这些文件。如果是使用File.CopyTo这样的函数,是否相当于资源管理器中的拖放?

如果我自己编写复制函数并使用流来完成,那么字节将通过程序运行的任何地方,但我可以更轻松地跟踪进度。

【问题讨论】:

  • Do the bytes of the file stream through the computer I'm currently using? - 嗯......是的。你能更具体地说明什么让你感到困惑吗?有点难以理解您的问题所要求的。您只是询问自定义文件副本的进度指示器吗?或者您实际上想要详细了解 Windows 如何与您的 NIC 通信?
  • 嗯,一种可能是文件从不接触计算机,并且在操作系统启动后在较低级别处理传输。
  • @user3916403 是的,字节是通过复印机路由的。如果你想亲眼看看,你可以得到一个像 Wireshark 这样的程序,在你复制网络文件时观察网络流量。
  • 我想我担心的是,windows 可能有有效的方法来进行这种传输,我可能会或可能不会通过滚动我自己的自定义方法而失败。为什么不给出答案让我接受呢?

标签: c# windows networking file-io


【解决方案1】:

文件的字节流是否通过我当前使用的计算机?

是的。

这是否等同于资源管理器中的拖放?

几乎,但不完全。字节仍将流经本地计算机,但网络流量会略有不同。例如。 explorer 在打开文件夹时会访问 thumbs.db(File.CopyTo 不会),explorer 可能会使用稍微不同的 NetBIOS 调用、不同的线程策略、不同的缓冲策略等。

【讨论】:

  • 为了完整起见,请注意这并非总是为真。在 SAN 环境中,Windows 2012 R2 允许客户端将文件从一台服务器复制到另一台服务器,而数据永远不会离开 SAN。 (显然,SAN 必须支持此功能,而且我认为客户端也必须运行 Windows 8.1。恐怕我不记得微软如何称呼它,因此无法提供参考。)跨度>
  • @HarryJohnston 它叫做Offloaded Data Transfer。我不确定提出它是否是一个好主意,因为 ODX 是一个非常小众的功能,不适用于一般情况。
【解决方案2】:

我想一定是通过笔记本电脑。

我目前不在办公室工作并连接到公共 wifi。

在任务管理器中,当我启动从一个网络位置到另一个网络位置的复制时,我的无线连接图表从 0%-1% 跳到一致的 10-15%。

每个文件传输后,它会降至 0%,然后开始下一个。 chart

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 2013-08-26
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多