0

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

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

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

4

1 回答 1

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);
}

以下是有关 msdn 绑定的更多信息。

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

在调用 Bind 之前,您必须首先创建要从中通信数据的本地 IPEndPoint。如果您不关心分配哪个本地地址,您可以使用 IPAddress.Any 作为地址参数创建一个 IPEndPoint,底层服务提供商将分配最合适的网络地址。如果您有多个网络接口,这可能有助于简化您的应用程序。如果您不关心使用哪个本地端口,您可以使用 0 作为端口号创建一个 IPEndPoint。在这种情况下,服务提供商将分配一个介于 1024 和 5000 之间的可用端口号。

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

于 2012-02-04T15:16:39.207 回答