识别HTTP响应来自哪个网卡

本文关键字:网卡 HTTP 响应 识别 | 更新日期: 2023-09-27 18:05:47

我的桌面上有多个网卡。我使用HTTP通信到一个服务器。当我发送和接收响应时。我想知道在所有NIC中,哪个NIC被用于特定HTTP请求的通信。

我需要知道这是因为多个NIC可以连接到专用网络,只有一个NIC连接到我想要托管回调URL的所需HTTP服务器。我正在使用c#, .Net 4.0

识别HTTP响应来自哪个网卡

您不能真正询问请求来自哪个NIC,因为您不应该关心。但是你可以得到请求的IP地址:

var localAddress = Request.ServerVariables["LOCAL_ADDR"];

正如Dave Van den Eynde所说,加上这得到了机器上适配器的IP地址:-

  foreach (NetworkInterface netInterface in NetworkInterface.GetAllNetworkInterfaces())
  {
    Console.WriteLine("Name: " + netInterface.Name);
    Console.WriteLine("Description: " + netInterface.Description);
    Console.WriteLine("Addresses: ");
    IPInterfaceProperties ipProps = netInterface.GetIPProperties();
    foreach (UnicastIPAddressInformation addr in ipProps.UnicastAddresses)
    {
      Console.WriteLine(" " + addr.Address.ToString());
    }
    Console.WriteLine("");
  }

。. NET的HTTPWebRequest和相关对象不会为您在堆栈中探测LocalEndpoint信息。如果使用FiddlerCore之类的东西,则可以在每个接口上尝试请求,或者可以使用如下技术:http://blogs.msdn.com/b/fiddler/archive/2011/03/09/mapping-socket-or-port-to-owner-process-in-c-sharp-dotnet.aspx尝试推断正在进行的连接使用了哪个本地适配器。

但是一般来说,这种方法是很脆弱的,您应该仔细考虑是否真的需要这个特性。