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 メソッドを使用します。Listen メソッドを呼び出す前に、Bind を呼び出す必要があります。特定のローカル エンドポイントを使用する必要がない限り、Connect メソッドを使用する前に Bind を呼び出す必要はありません。Bind メソッドは、コネクションレス プロトコルとコネクション型プロトコルの両方で使用できます。

Bind を呼び出す前に、データの通信元となるローカル IPEndPoint を作成する必要があります。どのローカル アドレスが割り当てられているかを気にしない場合は、アドレス パラメーターとして IPAddress.Any を使用して IPEndPoint を作成できます。これにより、基になるサービス プロバイダーが最も適切なネットワーク アドレスを割り当てます。これは、複数のネットワーク インターフェイスがある場合にアプリケーションを簡素化するのに役立つ場合があります。どのローカル ポートを使用するかを気にしない場合は、ポート番号に 0 を使用して IPEndPoint を作成できます。この場合、サービス プロバイダーは 1024 ~ 5000 の使用可能なポート番号を割り当てます。

上記の方法を使用すると、LocalEndPoint を呼び出すことで、どのローカル ネットワーク アドレスとポート番号が割り当てられているかを確認できます。接続指向のプロトコルを使用している場合、LocalEndPoint は、Connect または EndConnect メソッドを呼び出すまで、ローカルに割り当てられたネットワーク アドレスを返しません。コネクションレス プロトコルを使用している場合は、送信または受信が完了するまで、この情報にアクセスできません。

于 2012-02-04T15:16:39.207 に答える