Socket.Connect メソッド
リモート ホストへの接続を確立します。
Public Sub Connect( _
ByVal remoteEP As EndPoint _)
[C#]
public void Connect(EndPointremoteEP);
[C++]
public: void Connect(EndPoint* remoteEP);
[JScript]
public function Connect(
remoteEP : EndPoint);
パラメータ
- remoteEP
リモート デバイスを表す EndPoint 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | remoteEP が null 参照 (Visual Basic では Nothing) です。 |
SocketException | ソケットへのアクセスを試みているときにエラーが発生しました。詳細については、「解説」を参照してください。 |
ObjectDisposedException | Socket は閉じられています。 |
SecurityException | コール スタックの上位にある呼び出し元が、要求された操作のアクセス許可を保持していません。 |
解説
TCP などのコネクション指向のプロトコルを使用している場合、 Connect メソッドは LocalEndPoint と指定したリモート エンドポイント間のネットワーク接続を同期的に確立します。コネクションレスのプロトコルを使用している場合、 Connect は既定のリモート ホストを確立します。 Connect を呼び出したら、 Send メソッドを使用してリモート デバイスにデータを送信できます。また、 Receive メソッドを使用してリモート デバイスからデータを受信することもできます。
UDP などのコネクションレスのプロトコルを使用している場合は、データを送受信する前に Connect を呼び出す必要はありません。リモート ホストとの同期通信には、 SendTo および ReceiveFrom を使用できます。 Connect を呼び出した場合、指定した既定のアドレス以外から送信されたデータグラムはすべて破棄されます。既定のリモート ホストをブロードキャスト アドレスに設定する場合は、最初に SetSocketOption メソッドを呼び出し、ソケット オプションを SocketOptionName.Broadcast に設定する必要があります。このように設定しないと、 Connect は SocketException をスローします。 SocketException が発生した場合は、 SocketException.ErrorCode を使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。
Connect を呼び出す前に Blocking プロパティを false に設定しないと、 Connect メソッドはブロックします。TCP などのコネクション指向のプロトコルを使用しており、ブロックを無効にしている場合、 Connect には接続を確立するための時間が必要です。このため、 SocketException をスローします。一方、コネクションレスのプロトコルは、既定のリモート ホストを確立するだけであるため、例外をスローしません。 SocketException.ErrorCode を使用すると、特定のエラー コードを取得できます。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。エラーが WSAEWOULDBLOCK を返した場合、リモート ホスト接続はコネクション指向の Socket によって開始されていますが、正常に完了していません。 Poll メソッドを使用して、 Socket がいつ接続を完了するかを確認します。
メモ コネクション指向のプロトコルを使用しており、 Connect の前に Bind を呼び出さなかった場合は、基になるサービス プロバイダがローカル ネットワーク アドレスとポート番号を割り当てます。コネクションレスのプロトコルを使用している場合は、送受信操作を完了するまで、サービス プロバイダはローカル ネットワーク アドレスとポート番号を割り当てません。既定のリモート ホストを変更する必要がある場合は、必要なエンドポイントで Connect を再度呼び出します。
使用例
[Visual Basic, C#, C++] リモート エンドポイントに接続し、接続を検証する例を次に示します。
aSocket.Connect(anEndPoint)
If Not aSocket.Connected Then
Console.WriteLine("Winsock error: " _
+ Convert.ToString(System.Runtime.InteropServices.Marshal.GetLastWin32Error()))
End If
[C#]
aSocket.Connect(anEndPoint);
if (!aSocket.Connected) {
Console.WriteLine("Winsock error: "
+ Convert.ToString(System.Runtime.InteropServices.Marshal.GetLastWin32Error()));
}
[C++]
aSocket->Connect(anEndPoint);
if (!aSocket->Connected) {
Console::WriteLine(S"Winsock error: {0}", Convert::ToString(System::Runtime::InteropServices::Marshal::GetLastWin32Error()));
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
.NET Framework セキュリティ:
- SocketPermission 。関連付けられた列挙体: NetworkAccess.Connect
参照
Socket クラス | Socket メンバ | System.Net.Sockets 名前空間 | Send | SendTo | Receive | ReceiveFrom | LocalEndPoint | SetSocketOption | Blocking | Poll