我有一台带有多张网卡的机器。我的进程非常耗费网络,因为它通过网络将许多文件复制到另一台计算机上的共享位置(例如“\ ...”)。
我想为该进程设置专用NIC,但File.Copy
\ File.Move
的C#IO API会屏蔽所使用的NIC。
如何在C#中完成,甚至在C#项目下使用一些C ++调整?
答案 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.1
,192.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
的“最低成本路径”。