Socket.BeginAccept メソッド (AsyncCallback, Object)
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim callback As AsyncCallback Dim state As Object Dim returnValue As IAsyncResult returnValue = instance.BeginAccept(callback, state)
戻り値
非同期の Socket 作成を参照する IAsyncResult。


コネクション指向のプロトコルは、BeginAccept メソッドを使用して受信接続の試行を非同期的に処理できます。接続を非同期的に受け入れると、個別の実行スレッド内でデータを送受信できます。BeginAccept メソッドを呼び出す前に、Listen メソッドを呼び出して、受信接続要求を待機してキューに置いておく必要があります。
AsyncCallback デリゲートを実装するコールバック メソッドを作成し、その名前を BeginAccept メソッドに渡す必要があります。この操作を行うには、少なくとも、state パラメータを使用して、待機中の Socket オブジェクトを BeginAccept に渡さなければなりません。またコールバックに他の情報が必要な場合は、小さなクラスを作成して Socket および必要な情報を保持させることができます。このクラスのインスタンスは、state パラメータを使用して BeginAccept メソッドに渡します。
コールバック メソッドは EndAccept メソッドを呼び出す必要があります。アプリケーションが BeginAccept を呼び出すと、指定したコールバック メソッドが個別のスレッドを使用して実行され、EndAccept は、保留中の接続が取得されるまでブロックします。EndAccept は、リモート ホストとのデータの送受信に使用できる、新しい Socket オブジェクトを返します。この返された Socket を使用して、他の接続を接続キューから受け取ることはできません。BeginAccept メソッドを呼び出してから元のスレッドをブロックする場合は、WaitHandle.WaitOne を使用します。元のスレッドの実行を継続させるには、コールバック メソッドの ManualResetEvent で Set メソッドを呼び出します。コールバック メソッドの記述に関する追加情報については、「Callback のサンプル」を参照してください。
![]() |
---|
返された Socket の RemoteEndPoint メソッドを呼び出すと、リモート ホストのネットワーク アドレスとポート番号を確認できます。 |

Dim lipa As IPHostEntry = Dns.Resolve("host.contoso.com") Dim lep As New IPEndPoint(lipa.AddressList(0), 11000) Dim s As New Socket(lep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp) Try s.Bind(lep) s.Listen(1000) While True allDone.Reset() Console.WriteLine("Waiting for a connection...") s.BeginAccept(New AsyncCallback(AddressOf Async_Send_Receive.Listen_Callback), s) allDone.WaitOne() End While Catch e As Exception Console.WriteLine(e.ToString()) End Try End Sub 'Listen
IPHostEntry lipa = Dns.Resolve("host.contoso.com"); IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000); Socket s = new Socket(lep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp); try{ s.Bind(lep); s.Listen(1000); while(true){ allDone.Reset(); Console.WriteLine("Waiting for a connection..."); s.BeginAccept(new AsyncCallback(Async_Send_Receive.Listen_Callback), s); allDone.WaitOne(); } } catch (Exception e){ Console.WriteLine(e.ToString()); }
IPHostEntry^ lipa = Dns::Resolve( "host.contoso.com" ); IPEndPoint^ lep = gcnew IPEndPoint( lipa->AddressList[ 0 ], 11000 ); Socket^ s = gcnew Socket( lep->Address->AddressFamily, SocketType::Stream, ProtocolType::Tcp ); try { s->Bind( lep ); s->Listen( 1000 ); while ( true ) { allDone->Reset(); Console::WriteLine( "Waiting for a connection..." ); s->BeginAccept( gcnew AsyncCallback( &Async_Send_Receive::Connect_Callback ), s ); allDone->WaitOne(); } } catch ( Exception^ e ) { Console::WriteLine( e ); }
IPHostEntry lipa = Dns.Resolve("host.contoso.com"); IPEndPoint lep = new IPEndPoint(lipa.get_AddressList()[0], 11000); Socket s = new Socket(lep.get_Address().get_AddressFamily(), SocketType.Stream, ProtocolType.Tcp); try { s.Bind(lep); s.Listen(1000); while (true) { allDone.Reset(); Console.WriteLine("Waiting for a connection..."); s.BeginAccept(new AsyncCallback(Async_Send_Receive. Listen_Callback), s); allDone.WaitOne(); } } catch (System.Exception e) { Console.WriteLine(e.ToString()); }

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.BeginAccept メソッド (Socket, Int32, AsyncCallback, Object)
アセンブリ: System (system.dll 内)

Public Function BeginAccept ( _ acceptSocket As Socket, _ receiveSize As Integer, _ callback As AsyncCallback, _ state As Object _ ) As IAsyncResult
Dim instance As Socket Dim acceptSocket As Socket Dim receiveSize As Integer Dim callback As AsyncCallback Dim state As Object Dim returnValue As IAsyncResult returnValue = instance.BeginAccept(acceptSocket, receiveSize, callback, state)
public IAsyncResult BeginAccept ( Socket acceptSocket, int receiveSize, AsyncCallback callback, Object state )
public: IAsyncResult^ BeginAccept ( Socket^ acceptSocket, int receiveSize, AsyncCallback^ callback, Object^ state )
public IAsyncResult BeginAccept ( Socket acceptSocket, int receiveSize, AsyncCallback callback, Object state )
public function BeginAccept ( acceptSocket : Socket, receiveSize : int, callback : AsyncCallback, state : Object ) : IAsyncResult
戻り値
非同期の Socket オブジェクトの作成を参照する IAsyncResult オブジェクト。


コネクション指向のプロトコルは、BeginAccept メソッドを使用して受信接続の試行を非同期的に処理できます。接続を非同期的に受け入れると、個別の実行スレッド内でデータを送受信できます。このオーバーロードによって、受け入れられるソケットを acceptSocket パラメータで指定できます。このパラメータが null 参照 (Visual Basic では Nothing) の場合、受け入れられたソケットは BeginAccept メソッドで作成されます。初期転送で受け入れるバイト数を receiveSize パラメータで指定できます。
BeginAccept メソッドを呼び出す前に、Listen メソッドを呼び出して、受信接続要求を待機してキューに置いておく必要があります。
AsyncCallback デリゲートを実装するコールバック メソッドを作成し、その名前を BeginAccept メソッドに渡す必要があります。この操作を行うには、少なくとも、state パラメータを使用して、待機中の Socket オブジェクトを BeginAccept に渡さなければなりません。またコールバックに他の情報が必要な場合は、小さなクラスを作成して Socket および必要な情報を保持させることができます。このクラスのインスタンスは、state パラメータを使用して BeginAccept メソッドに渡します。
コールバック メソッドは EndAccept メソッドを呼び出す必要があります。アプリケーションが BeginAccept を呼び出すと、指定したコールバック メソッドが個別のスレッドを使用して実行され、EndAccept は、保留中の接続が取得されるまでブロックします。
EndAccept は、リモート ホストとのデータの送受信に使用できる、新しい Socket オブジェクトを返します。この返された Socket を使用して、他の接続を接続キューから受け取ることはできません。BeginAccept メソッドを呼び出してから元のスレッドをブロックする場合は、WaitHandle.WaitOne を使用します。元のスレッドの実行を継続させるには、コールバック メソッドの ManualResetEvent で Set メソッドを呼び出します。コールバック メソッドの記述に関する追加情報については、「Callback のサンプル」を参照してください。
![]() |
---|
返された Socket オブジェクトの RemoteEndPoint メソッドを呼び出すと、リモート ホストのネットワーク アドレスとポート番号を確認できます。 |

ソケットを開いて非同期接続を受け入れるコード例を次に示します。この例では、ソケットはデータの最初の 10 バイトを受け入れ、acceptSocket パラメータは null 参照 (Visual Basic では Nothing) です。このパラメータによって、BeginAccept メソッドは受け入れられたソケットを強制的に作成します。コールバック デリゲートによって、受信バイト数とデータがコンソールに表示されます。残りのデータを受信する方法については、BeginReceive のトピックを参照してください。
// This server waits for a connection and then uses asynchronous operations to // accept the connection with initial data sent from the client. // Establish the local endpoint for the socket. IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); // Create a TCP/IP socket. Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); // Bind the socket to the local endpoint, and listen for incoming connections. listener.Bind(localEndPoint); listener.Listen(100); while (true) { // Set the event to nonsignaled state. allDone.Reset(); // Start an asynchronous socket to listen for connections and receive data from the client. Console.WriteLine("Waiting for a connection..."); // Accept the connection and receive the first 10 bytes of data. // BeginAccept() creates the accepted socket. int receivedDataSize = 10; listener.BeginAccept(null, receivedDataSize, new AsyncCallback(AcceptReceiveDataCallback), listener); // Wait until a connection is made and processed before continuing. allDone.WaitOne(); } } public static void AcceptReceiveDataCallback(IAsyncResult ar) { // Get the socket that handles the client request. Socket listener = (Socket) ar.AsyncState; // End the operation and display the received data on the console. byte[] Buffer; int bytesTransferred; Socket handler = listener.EndAccept(out Buffer, out bytesTransferred, ar); string stringTransferred = Encoding.ASCII.GetString(Buffer, 0, bytesTransferred); Console.WriteLine(stringTransferred); Console.WriteLine("Size of data transferred is {0}", bytesTransferred); // Create the state object for the asynchronous receive. StateObject state = new StateObject(); state.workSocket = handler; handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state); }

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.BeginAccept メソッド (Int32, AsyncCallback, Object)
アセンブリ: System (system.dll 内)

Public Function BeginAccept ( _ receiveSize As Integer, _ callback As AsyncCallback, _ state As Object _ ) As IAsyncResult
Dim instance As Socket Dim receiveSize As Integer Dim callback As AsyncCallback Dim state As Object Dim returnValue As IAsyncResult returnValue = instance.BeginAccept(receiveSize, callback, state)
public function BeginAccept ( receiveSize : int, callback : AsyncCallback, state : Object ) : IAsyncResult
戻り値
非同期の Socket 作成を参照する IAsyncResult。


コネクション指向のプロトコルは、BeginAccept メソッドを使用して受信接続の試行を非同期的に処理できます。接続を非同期的に受け入れると、個別の実行スレッド内でデータを送受信できます。このオーバーロードによって、初期転送で受け入れるバイト数を receiveSize パラメータで指定できます。
BeginAccept メソッドを呼び出す前に、Listen メソッドを呼び出して、受信接続要求を待機してキューに置いておく必要があります。
AsyncCallback デリゲートを実装するコールバック メソッドを作成し、その名前を BeginAccept メソッドに渡す必要があります。この操作を行うには、少なくとも、state パラメータを使用して、待機中の Socket オブジェクトを BeginAccept に渡さなければなりません。またコールバックに他の情報が必要な場合は、小さなクラスを作成して Socket および必要な情報を保持させることができます。このクラスのインスタンスは、state パラメータを使用して BeginAccept メソッドに渡します。
コールバック メソッドは EndAccept メソッドを呼び出す必要があります。アプリケーションが BeginAccept を呼び出すと、指定したコールバック メソッドが個別のスレッドを使用して実行され、EndAccept は、保留中の接続が取得されるまでブロックします。
EndAccept は、リモート ホストとのデータの送受信に使用できる、新しい Socket を返します。この返された Socket を使用して、他の接続を接続キューから受け取ることはできません。BeginAccept メソッドを呼び出してから元のスレッドをブロックする場合は、WaitHandle.WaitOne を使用します。元のスレッドの実行を継続させるには、コールバック メソッドの ManualResetEvent で Set メソッドを呼び出します。コールバック メソッドの記述に関する追加情報については、「Callback のサンプル」を参照してください。
![]() |
---|
返された Socket オブジェクトの RemoteEndPoint メソッドを呼び出すと、リモート ホストのネットワーク アドレスとポート番号を確認できます。 |

ソケットを開いて非同期接続を受け入れるコード例を次に示します。この例では、ソケットはデータの最初の 10 バイトを受け入れます。コールバック デリゲートによって、受信バイト数とデータがコンソールに表示されます。残りのデータを受信する方法については、BeginReceive のトピックを参照してください。
// This server waits for a connection and then uses asynchronous operations to // accept the connection with initial data sent from the client. // Establish the local endpoint for the socket. IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); // Create a TCP/IP socket. Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); // Bind the socket to the local endpoint, and listen for incoming connections. listener.Bind(localEndPoint); listener.Listen(100); while (true) { // Set the event to nonsignaled state. allDone.Reset(); // Start an asynchronous socket to listen for connections and receive data from the client. Console.WriteLine("Waiting for a connection..."); // Accept the connection and receive the first 10 bytes of data. int receivedDataSize = 10; listener.BeginAccept(receivedDataSize, new AsyncCallback(AcceptReceiveCallback), listener); // Wait until a connection is made and processed before continuing. allDone.WaitOne(); } } public static void AcceptReceiveCallback(IAsyncResult ar) { // Get the socket that handles the client request. Socket listener = (Socket) ar.AsyncState; // End the operation and display the received data on the console. byte[] Buffer; int bytesTransferred; Socket handler = listener.EndAccept(out Buffer, out bytesTransferred, ar); string stringTransferred = Encoding.ASCII.GetString(Buffer, 0, bytesTransferred); Console.WriteLine(stringTransferred); Console.WriteLine("Size of data transferred is {0}", bytesTransferred); // Create the state object for the asynchronous receive. StateObject state = new StateObject(); state.workSocket = handler; handler.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state); }

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.BeginAccept メソッド

名前 | 説明 |
---|---|
Socket.BeginAccept (AsyncCallback, Object) | 受信接続の試行を受け入れる非同期操作を開始します。 .NET Compact Framework によってサポートされています。 |
Socket.BeginAccept (Int32, AsyncCallback, Object) | 受信接続の試行を受け入れる非同期操作を開始し、クライアント アプリケーションによって送信されるデータの最初のブロックを受信します。 |
Socket.BeginAccept (Socket, Int32, AsyncCallback, Object) | 指定したソケットから受信接続の試行を受け入れる非同期操作を開始し、クライアント アプリケーションによって送信されるデータの最初のブロックを受信します。 |

- Socket.BeginAcceptのページへのリンク