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

时间:2014-01-14 20:43:12

标签: c# .net

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

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

如何在C#中完成,甚至在C#项目下使用一些C ++调整?

2 个答案:

答案 0 :(得分:3)

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

话虽这么说,您可以通过Sockets设置可以绑定到NIC的协议。

假设您有一个位于“123.1.2.3”的NicA和位于“156.2.3.4”的NicB。然后你可以创建一个套接字Bind()IPAddress,匹配你关心的网卡。

答案 1 :(得分:1)

这是一个完整的小工具,但您可以将未使用的私有范围中的辅助IP地址绑定到两台计算机,并File.Copy使用它。

例如,假设NIC1上的正常LAN寻址为192.168.0.1192.168.0.254

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

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