我有一台带有多个网卡的机器。我的过程非常消耗网络,因为它通过网络将许多文件复制到另一台计算机上的共享位置(例如"\...")。
我想为该过程设置一个专用的 NIC,但 File.Copy
\ 的 C# IO API File.Move
屏蔽所使用的 NIC。
如何在 C# 中完成它,甚至可以通过在 C# 项目下使用一些C++调整来完成?
File.Move()
和File.Copy()
实际上对网络一无所知。 它完全依靠操作系统来处理一切。 因此,如果您将文件移动/复制到恰好是网络装载的路径......那就这样吧。但Move()
和Copy()
并不在乎。
话虽如此,您可以通过Sockets
设置可以绑定到 NIC 的协议。
假设您有一个位于"123.1.2.3"上的NicA
,NicB
位于"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
的"成本最低的路由"。