有没有办法指定 .net 将使用哪个 NetworkInterface?

2024-05-07

我想使用 Wifi 和 LAN 连接在设备上运行一系列测试。我有两张网卡,一张是WiFi,一张是有线。该设备具有可通过两个网络接口访问的单个 IP 地址。有没有办法保证我的机器使用特定的网络接口,以便我可以通过有线连接运行所有测试,然后通过 Wifi 连接运行所有测试?

请记住,两个连接共享同一子网,因此任一连接都将成功连接到设备。我只是希望能够来回切换并指定我在任何给定时间使用的连接。

我在 .net 上使用 C# 来使用 HttpClient。有没有办法强制 HttpClient 使用特定的网络接口?它似乎会根据 IP 地址自动选择一个,但在这种情况下,有 2 个网络接口可以工作。我需要能够以编程方式来回切换来运行我的自动化测试。

我注意到一种称为“接口指标”的东西,可以通过 IP4 属性高级 TCP/IP 设置手动更改。每次都会使用编号较小的接口吗?有没有办法以编程方式改变这个值?

更多澄清:我没有直接跳转到来回禁用 WiFi NIC 或有线 NIC 的原因是当您禁用 WiFi NIC 时,您会断开它所连接的设备,并且当您启用它时它不会自动重新连接。 (即使您说“自动连接”,重新启用后也不会连接)。不过,我找到了一个快速的解决方案。将有线 NIC 上的接口指标设置为低于 WiFi NIC 上的接口指标。然后,只需启用和禁用有线网卡即可。禁用后,系统将使用 WiFi NIC。启用后,系统将使用有线网卡,因为其接口指标设置较低。现在,我只需要弄清楚如何以编程方式启用/禁用有线网卡...


一种方法是更新路由表,将特定 IP 的流量强制发送到特定 NIC。路由表用于决定将流量发送到哪个 NIC。

您可以通过以下几种方式来做到这一点:

1)使用P/Invoke用C#代码更新路由表(参见这里有一个很好的例子 https://pastebin.com/mvLYvgbg,但基本上你是在打电话创建Ip转发条目 https://msdn.microsoft.com/en-us/library/windows/desktop/aa365860(v=vs.85).aspx).

2) Use Process.Start调用route.exe,例如

route.exe ADD destination_network MASK subnet_mask  gateway_ip metric_cost

and

route.exe CHANGE destination_network MASK subnet_mask  gateway_ip metric_cost
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法指定 .net 将使用哪个 NetworkInterface? 的相关文章

  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • DataTable.GetChanges() 不断返回 NULL

    我正在尝试获取存在于的所有行allData但不在removeData public static DataTable RemoveDuplicateRows DataTable allData DataTable removeData re
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐