Socket.Accept メソッド
新しく作成された接続に対して新しい Socket を作成します。
Public Function Accept() As Socket
[C#]
public Socket Accept();
[C++]
public: Socket* Accept();
[JScript]
public function Accept() : Socket;
戻り値
新しく作成された接続に対する Socket 。
例外
例外の種類 | 条件 |
---|---|
SocketException | ソケットへのアクセスを試みているときにエラーが発生しました。詳細については、「解説」を参照してください。 |
ObjectDisposedException | Socket は閉じられています。 |
InvalidOperationException | Socket がバインドされていません。 Accept の前に Bind を呼び出す必要があります。 |
解説
Accept は、待機中のソケットの接続要求キューから最初の保留中の接続要求を同期的に抽出し、新しい Socket を作成して返します。この返された Socket を使用して、他の接続を接続キューから受け取ることはできません。ただし、返された Socket の RemoteEndPoint メソッドを呼び出すと、リモート ホストのネットワーク アドレスとポート番号を確認できます。
ブロッキング モードでは、 Accept は、受信接続の試行がキューに置かれるまでブロックします。接続を受け取ったら、元の Socket は、その接続を閉じるまで受信接続要求をキューに置き続けます。
このメソッドを非ブロッキング Socket を使用して呼び出しており、接続要求がキューに置かれていない場合、 Accept は SocketException をスローします。 SocketException が発生した場合は、 SocketException.ErrorCode を使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。
メモ Accept メソッドを呼び出す前に、まず Listen メソッドを呼び出して、受信接続要求を待機してキューに置いておく必要があります。
使用例
[Visual Basic, C#, C++] 単純な Socket 接続を受け入れる例を次に示します。
Dim mySocket As Socket = listeningSocket.Accept()
If mySocket Is Nothing Then
Console.WriteLine("Winsock error: " & _
Convert.ToString( _
System.Runtime.InteropServices.Marshal.GetLastWin32Error()))
End If
[C#]
Socket mySocket = listeningSocket.Accept();
if (mySocket == null)
{
Console.WriteLine("Winsock error: " +
Convert.ToString(System.Runtime.InteropServices.Marshal.GetLastWin32Error()) );
}
[C++]
Socket* mySocket = listeningSocket->Accept();
if (mySocket == 0)
{
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
参照
Socket クラス | Socket メンバ | System.Net.Sockets 名前空間 | Listen | RemoteEndPoint | Socket.BeginAccept