簡體   English   中英

如何強制特定網絡適配器上的流量

[英]How to force traffic on specific network adapter

我正在開發一個控制台應用程序作為我的web-api的客戶端,如谷歌驅動器和天空驅動器等...我遇到了一個邊緣案例:我的電腦有2個連接:一個以太網和一個wifi 。
以太網在代理后面,wifi是開放的。
這里的問題是以太網在代理后面,阻止了我的alpha測試的公共地址(在windows azure中)。

因為windows似乎總是只相信以太網,這是令人沮喪的,因為如果它只嘗試wifi,它會工作......我想知道我該怎么做才能強制打開使用我的第二個網絡適配器(wifi)的套接字。

Shtééf的 anwsersocket如何知道使用哪個網絡接口控制器相結合 MSDN套接字引用提供以下內容:

假設PC有兩個接口:

  • Wifi:192.168.22.37
  • 以太網:192.168.1.83

打開套接字如下:

`

using System.Net.Sockets;
using System.Net;

void Main()
{
    Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    int anyPort = 0;
    EndPoint localWifiEP = new IPEndPoint(new IPAddress(new byte[] { 192, 168, 22, 37 }), anyPort);
    EndPoint localEthernetEP = new IPEndPoint(new IPAddress(new byte[] { 192, 168, 1, 82 }), anyPort);

    clientSock.Bind(localWifiEP);

// Edit endpoint to connect to an other web-api
// EndPoint webApiServiceEP = new DnsEndPoint("www.myAwsomeWebApi.org", port: 80);
    EndPoint webApiServiceEP = new DnsEndPoint("www.google.com", port: 80);
    clientSock.Connect(webApiServiceEP);

    clientSock.Close();
}

注意:使用這樣的Socket有點低級別。 我找不到如何輕松地使用Sockets -bound到本地端點 - 使用更高級別的設施,如HttpClient或WCF NetHttpBinding 對於后者,您可以查看如何使用基於套接字的客戶端和WCF(net.tcp)服務? 指針如何實現自己的傳輸。

您需要將出站套接字連接綁定到正確的網絡接口,請參閱此SO帖子: 套接字如何知道要使用哪個網絡接口控制器?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM