如何从不同的静态IP地址向任何网站发送请求?

时间:2012-02-04 13:49:31

标签: c# http-request

我正在使用C#发送HTTP请求。 (http://codesamplez.com/programming/http-request-c-sharp

我有专用服务器。我购买了更多静态IP。

如何使用这些不同的IP发送请求。

1 个答案:

答案 0 :(得分:2)

您要做的是绑定到特定的网络适配器。默认情况下,LocalEndpoint为null,因此您的连接将分配适配器。您可以使用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.

  

如果需要使用特定的本地端点,请使用Bind方法。您   必须先调用Bind才能调用Listen方法。 你不需要   在使用Connect方法之前调用Bind,除非您需要使用   特定的本地端点。您可以在两者上使用Bind方法   无连接和面向连接的协议。

     

在调用Bind之前,必须先从中创建本地IPEndPoint   您打算传达数据。如果你不在乎哪个地方   如果已分配地址,则可以使用IPAddress.Any创建IPEndPoint   作为地址参数,底层服务提供商将   分配最合适的网络地址。这可能有助于简化   您的应用程序,如果您有多个网络接口。如果你这样做   不关心使用哪个本地端口,您可以使用创建IPEndPoint   0表示端口号。在这种情况下,服务提供商将分配   1024到5000之间的可用端口号。

     

如果您使用上述方法,您可以发现本地网络   地址和端口号已通过调用分配   LocalEndPoint。如果您使用面向连接的协议,   LocalEndPoint不会返回本地分配的网络地址   直到您调用Connect或EndConnect方法之后。   如果您使用的是无连接协议,则无法访问   在您完成发送或接收之前,请先获取此信息。