Socket.BeginAcceptとは? わかりやすく解説

Socket.BeginAccept メソッド (AsyncCallback, Object)

受信接続試行受け入れ非同期操作開始します

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function BeginAccept ( _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginAccept(callback, state)
public IAsyncResult BeginAccept (
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginAccept (
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginAccept (
    AsyncCallback callback, 
    Object state
)
public function BeginAccept (
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

callback

AsyncCallback デリゲート

state

この要求ステータス情報格納するオブジェクト

戻り値
非同期Socket 作成参照する IAsyncResult。

例外例外
例外種類条件

ObjectDisposedException

Socket オブジェクト閉じられています。

NotSupportedException

このメソッドには Windows NT が必要です。

InvalidOperationException

受け入れ元のソケットが、接続待機していません。BeginAccept前に Bind および Listen呼び出す必要があります

または

受け入れられソケットバインドされています。

ArgumentOutOfRangeException

receiveSize が 0 未満です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

解説解説

コネクション指向プロトコルは、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());
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginAccept メソッド (Socket, Int32, AsyncCallback, Object)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

指定したソケットから受信接続試行受け入れ非同期操作開始しクライアント アプリケーションによって送信されるデータ最初ブロック受信します

名前空間: System.Net.Sockets
アセンブリ: 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

パラメータ

acceptSocket

受け入れた Socket オブジェクト。この値は、null 参照 (Visual Basic では Nothing) の場合あります

receiveSize

受信する最大バイト数。

callback

AsyncCallback デリゲート

state

この要求ステータス情報格納するオブジェクト

戻り値
非同期Socket オブジェクトの作成参照する IAsyncResult オブジェクト

例外例外
例外種類条件

ObjectDisposedException

Socket オブジェクト閉じられています。

NotSupportedException

このメソッドには Windows NT が必要です。

InvalidOperationException

受け入れ元のソケットが、接続待機していません。BeginAccept の前に Bind および Listen呼び出す必要があります

または

受け入れられソケットバインドされています。

ArgumentOutOfRangeException

receiveSize が 0 未満です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

解説解説

コネクション指向プロトコルは、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);
}

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginAccept メソッド (Int32, AsyncCallback, Object)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

受信接続試行受け入れ非同期操作開始しクライアント アプリケーションによって送信されるデータ最初ブロック受信します

名前空間: System.Net.Sockets
アセンブリ: 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 IAsyncResult BeginAccept (
    int receiveSize,
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginAccept (
    int receiveSize, 
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginAccept (
    int receiveSize, 
    AsyncCallback callback, 
    Object state
)
public function BeginAccept (
    receiveSize : int, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

receiveSize

送信元から受け入れバイト数。

callback

AsyncCallback デリゲート

state

この要求ステータス情報格納するオブジェクト

戻り値
非同期Socket 作成参照する IAsyncResult。

例外例外
例外種類条件

ObjectDisposedException

Socket オブジェクト閉じられています。

NotSupportedException

このメソッドには Windows NT が必要です。

InvalidOperationException

受け入れ元のソケットが、接続待機していません。BeginAccept の前に Bind および Listen呼び出す必要があります

または

受け入れられソケットバインドされています。

ArgumentOutOfRangeException

receiveSize が 0 未満です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

解説解説

コネクション指向プロトコルは、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);
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginAccept メソッド




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Socket.BeginAccept」の関連用語

Socket.BeginAcceptのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Socket.BeginAcceptのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS