2012-02-04 43 views

回答

2

你想要做的是綁定到特定的網絡適配器。默認情況下,LocalEndpoint爲空,因此您的連接將分配一個適配器。您可以指定使用HttpWebRequest.ServicePoint.BindIPEndPointDelegate綁定的內容。

var req = (HttpWebRequest)WebRequest.Create("http://google.com/"); 
req.ServicePoint.BindIPEndPointDelegate = BindTo; 
using (req.GetResponse()); 

static IPEndPoint BindTo(ServicePoint servicepoint, IPEndPoint remoteendpoint, int retrycount) 
{ 
    IPAddress ip = IPAddress.Any; //This is where you specify the network adapter's address 
    int port = 0; //This in most cases should stay 0. This when 0 will bind to any port available. 
    return new IPEndPoint(ip, port); 
} 

Here is some more information on binding from msdn.

使用,如果你需要使用一個特定的本地端點的綁定方法。在調用Listen方法之前,您必須調用綁定 。 除非需要使用 特定本地端點,否則在使用連接方法之前,您不需要 來調用綁定。您可以在 無連接和麪向連接的協議上使用綁定方法。

在調用綁定之前,您必須首先從 創建您打算傳輸數據的本地IPEndPoint。如果您不關心分配了哪個本地地址 ,則可以使用IPAddress創建一個IPEndPoint.Any 作爲地址參數,並且底層服務提供商將爲 分配最合適的網絡地址。如果您有多個網絡接口,這可能有助於簡化 您的應用程序。如果您確實使用 並不關心使用了哪個本地端口,則可以使用端口號爲 0來創建IPEndPoint。在這種情況下,服務提供商將分配 1024和5000

如果用上述方法之間的可用端口號,你會發現什麼本地網絡 地址和端口號已通過調用 LocalEndPoint分配。如果您使用的是面向連接的協議,則在調用Connect或EndConnect方法之前,LocalEndPoint不會返回本地分配的網絡地址 。 如果您使用的是無連接協議,則在完成發送或接收之前,您不會訪問此信息的 。

相關問題