如何强制 File.Move / File.Copy 使用特定的网络接口卡 (NIC) C#



我有一台带有多个网卡的机器。我的过程非常消耗网络,因为它通过网络将许多文件复制到另一台计算机上的共享位置(例如"\...")。

我想为该过程设置一个专用的 NIC,但 File.Copy \ 的 C# IO API File.Move屏蔽所使用的 NIC。

如何在 C# 中完成它,甚至可以通过在 C# 项目下使用一些C++调整来完成?

File.Move()File.Copy()实际上对网络一无所知。 它完全依靠操作系统来处理一切。 因此,如果您将文件移动/复制到恰好是网络装载的路径......那就这样吧。但Move()Copy()并不在乎。

话虽如此,您可以通过Sockets设置可以绑定到 NIC 的协议。

假设您有一个位于"123.1.2.3"上的NicANicB位于"156.2.3.4"上。 然后,您可以创建一个套接字,并Bind()与您关注的 NIC 匹配的IPAddress

这是一个完全的笨蛋,但您可以将未使用的专用范围内的辅助 IP 地址绑定到两台计算机,File.Copy使用它。

例如,假设您的正常 LAN 寻址192.168.0.1 192.168.0.254 在 NIC1 上。

在"源"计算机上,将10.0.0.1绑定到 NIC2。在"目标"计算机上,将10.0.0.2绑定到要使用的 NIC,或者将其添加为现有 NIC 上的辅助地址(如果这是你的首选项)。

然后,您可以File.Copy \10.0.0.2share。源计算机上的操作系统应确定 NIC2 是10.0.0.2的"成本最低的路由"。

最新更新