天天看點

多網卡的環境下的發包

伺服器上面有兩張網卡分别連接配接電信和聯通網絡,要求軟體在接到A請求時,使用電信網卡通路網絡,接到B請求時,使用聯通網卡通路網絡,必須能多線程處理請求。

具體的解決方法如下:(在多網卡的環境下,隻要在通路外網時,指定使用那一個網卡IP來對外發包,就可以非常簡單的實作一開始所說的功能了)

//設定對外通路所使用網卡的IP
string sendingIp = "192.168.0.1";
//設定對外通路所使用的端口
int sendingPort = 5000;
Uri uri = new Uri("http://google.com");
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(uri);
//擷取對外通路的包,并指定使用那個IP(網卡)與端口來發送資料包
ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.BindIPEndPointDelegate =
    (servicePoint,remoteEp,retryCount) =>
         {
             return new IPEndPoint(IPAddress.Parse(sendingIp),sendingPort);
         };
//送出請求并擷取傳回結果
var data = new StreamReader(wr.GetResponse().GetResponseStream()).ReadToEnd();