【问题标题】:C# .NET: How to choose which Network adapter to connect my Application at runtimeC# .NET:如何选择在运行时连接我的应用程序的网络适配器
【发布时间】:2017-09-06 09:05:29
【问题描述】:

我的笔记本电脑连接到 LAN 和 WIFI 并有单独的网络连接, 我的 SQL 服务器与我的 LAN 在同一个网络中,并且我有一个功能,即在运行查询之前首先 PING 的 SQL 服务器,现在问题是每次我运行我的 Dekstop 应用程序时,它选择 WIFI 连接来 PING 服务器而不是局域网。 我可以获得我的网络适配器列表并确定哪个是 LAN 或 WIFI,但我如何告诉我的应用程序使用哪个?

NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
    if (adapter.OperationalStatus == OperationalStatus.Up)
    {
        if (adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
        {
          MessageBox.Show("No Connection to SQL Server");
        }
        else
        {         
          GetPING();  //PING SERVER FUNCTION IF TRUE
          MessageBox.Show("Connected to SQL, Run App Now.");
        }
    }
}

【问题讨论】:

  • 我不确定我是否理解这个问题。您通常不必在客户端应用程序中执行任何操作来告诉它使用哪个适配器。 IE。如果服务器名称解析为 LAN 地址,则网络堆栈将使用 LAN 适配器。
  • 抱歉混淆忘记添加我的 PINS 服务器功能。编辑了我的问题。
  • 路由由IP地址和掩码决定。 Windows 查看所有活动的连接,并采用最受限制的掩码路由。所以在 255.255.0.0 之前需要 255.255.255.0。使用 cmd.exe > IPCONFIG /all 查看适配器和掩码的 IP 地址。

标签: c# .net networking wifi lan


【解决方案1】:

您可以通过访问NetworkInterface.GetIPProperties().UnicastAddresses 属性获取已在网络接口上设置的所有IP 地址。之后,您需要做什么取决于您是如何实现 PING 功能的。

  1. 如果你只是执行 PING.exe,有​​ -S 选项可以让你指定你想用来 ping 的源地址。
  2. 如果使用Socket发送icmp回显消息,需要调用Socket.Bind方法指定本地端点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2015-04-29
    • 2012-07-24
    • 1970-01-01
    相关资源
    最近更新 更多