次の方法で共有


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 に設定する必要があります。このように設定しないと、 ConnectSocketException をスローします。 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 セキュリティ:

参照

Socket クラス | Socket メンバ | System.Net.Sockets 名前空間 | Send | SendTo | Receive | ReceiveFrom | LocalEndPoint | SetSocketOption | Blocking | Poll