socket_connect
socket_connect — ソケット上の接続を初期化する
説明
bool socket_connect ( resource socket, string address [, int port] )ソケット記述子 socket を用いて接続を初期化 します。この記述子は、socket_create() で作成した 有効なソケット記述子である必要があります。
パラメータaddress には、 ソケットの種類が AF_INET の場合はドット区切り表記の IP アドレス(例: 127.0.0.1)、 AF_UNIX の場合は Unix ドメインソケットのパス名を 指定します。
パラメータ port は AF_INET ソケットに接続する場合にのみ使用され、 接続するリモートホストのポートを指定します。
成功した場合に TRUE を、失敗した場合に FALSE を返します。 エラーコードは、 socket_last_error() により取得できます。 このコードを socket_strerror() に渡すことにより、 エラー内容を表すテキストを得ることができます。
socket_bind()、 socket_listen()、 socket_create()、 socket_last_error() および socket_strerror() も参照ください。
Socket.Connect メソッド (IPAddress[], Int32)
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim addresses As IPAddress() Dim port As Integer instance.Connect(addresses, port)


通常、このメソッドは GetHostAddresses を呼び出した直後に使用され、単一のホストに対する複数の IP アドレスを返すことができます。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 を再度呼び出します。 |

リモート エンドポイントに接続し、接続を検証するコード例を次に示します。
// Synchronous connect using Dns.GetHostAddresses to // resolve the host name. public static void Connect2(string host, int port) { IPAddress[] IPs = Dns.GetHostAddresses(host); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.WriteLine("Establishing Connection to {0}", host); s.Connect(IPs, port); Console.WriteLine("Connection established"); }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Connect メソッド (IPAddress, Int32)
アセンブリ: System (system.dll 内)



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 を再度呼び出します。 |

リモート エンドポイントに接続し、接続を検証するコード例を次に示します。
// Synchronous connect using IPAddress to resolve the // host name. public static void Connect1(string host, int port) { IPAddress[] IPs = Dns.GetHostAddresses(host); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.WriteLine("Establishing Connection to {0}", host); s.Connect(IPs[0], port); Console.WriteLine("Connection established"); }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Connect メソッド (String, Int32)
アセンブリ: System (system.dll 内)



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 を再度呼び出します。 |

リモート エンドポイントに接続し、接続を検証するコード例を次に示します。
// Synchronous connect using host name (resolved by the // Connect call.) public static void Connect3(string host, int port) { Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.WriteLine("Establishing Connection to {0}", host); s.Connect(host, port); Console.WriteLine("Connection established"); }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Connect メソッド

名前 | 説明 |
---|---|
Socket.Connect (EndPoint) | リモート ホストへの接続を確立します。 .NET Compact Framework によってサポートされています。 |
Socket.Connect (IPAddress, Int32) | リモート ホストへの接続を確立します。ホストは、IP アドレスとポート番号で指定されます。 |
Socket.Connect (IPAddress[], Int32) | リモート ホストへの接続を確立します。ホストは、IP アドレスとポート番号の配列で指定されます。 |
Socket.Connect (String, Int32) | リモート ホストへの接続を確立します。ホストは、ホスト名とポート番号で指定されます。 |

Socket.Connect メソッド (EndPoint)
アセンブリ: System (system.dll 内)



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 を再度呼び出します。 |

リモート エンドポイントに接続し、接続を検証するコード例を次に示します。
' .Connect throws an exception if unsuccessful client.Connect(anEndPoint) ' This is how you can determine whether a socket is still connected. Dim blockingState As Boolean = client.Blocking Try Dim tmp(0) As Byte client.Blocking = False client.Send(tmp, 0, 0) Console.WriteLine("Connected!") Catch e As SocketException ' 10035 == WSAEWOULDBLOCK If e.NativeErrorCode.Equals(10035) Then Console.WriteLine("Still Connected, but the Send would block") Else Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode) End If Finally client.Blocking = blockingState End Try Console.WriteLine("Connected: {0}", client.Connected) End Sub 'ConnectAndCheck
// .Connect throws an exception if unsuccessful client.Connect(anEndPoint); // This is how you can determine whether a socket is still connected. bool blockingState = client.Blocking; try { byte [] tmp = new byte[1]; client.Blocking = false; client.Send(tmp, 0, 0); Console.WriteLine("Connected!"); } catch (SocketException e) { // 10035 == WSAEWOULDBLOCK if (e.NativeErrorCode.Equals(10035)) Console.WriteLine("Still Connected, but the Send would block"); else { Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode); } } finally { client.Blocking = blockingState; } Console.WriteLine("Connected: {0}", client.Connected);
client->Connect( anEndPoint ); if ( !client->Connected ) { Console::WriteLine( "Winsock error: {0}", Convert::ToString( System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) ); } // This is how you can determine whether a socket is still connected. bool blockingState = client->Blocking; try { array<Byte>^tmp = gcnew array<Byte>(1); client->Blocking = false; client->Send( tmp, 0, static_cast<SocketFlags>(0) ); Console::WriteLine( L"Connected!" ); } catch ( SocketException^ e ) { // 10035 == WSAEWOULDBLOCK if ( e->NativeErrorCode.Equals( 10035 ) ) { Console::WriteLine( "Connected from an exception!" ); } else { Console::WriteLine( "Disconnected: {0}!", e->NativeErrorCode ); } } finally { client->Blocking = blockingState; } Console::WriteLine( "Connected: {0}", client->Connected );


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- socket_connectのページへのリンク