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

Socket.EndAccept メソッド (Byte[], Int32, IAsyncResult)

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

受信接続試行非同期的に受け入れ新しSocket オブジェクト作成してリモート ホスト通信処理します。このメソッドは、初期データと、転送されるバイト数を格納するバッファ返します

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

Public Function EndAccept ( _
    <OutAttribute> ByRef buffer As Byte(),
 _
    <OutAttribute> ByRef bytesTransferred As
 Integer, _
    asyncResult As IAsyncResult _
) As Socket
Dim instance As Socket
Dim buffer As Byte()
Dim bytesTransferred As Integer
Dim asyncResult As IAsyncResult
Dim returnValue As Socket

returnValue = instance.EndAccept(buffer, bytesTransferred, asyncResult)
public Socket EndAccept (
    out byte[] buffer,
    out int bytesTransferred,
    IAsyncResult asyncResult
)
public:
Socket^ EndAccept (
    [OutAttribute] array<unsigned char>^% buffer, 
    [OutAttribute] int% bytesTransferred, 
    IAsyncResult^ asyncResult
)
public Socket EndAccept (
    /** @attribute OutAttribute() */ /** @ref */ byte[] buffer, 
    /** @attribute OutAttribute() */ /** @ref */ int bytesTransferred,
 
    IAsyncResult asyncResult
)
JScript では、値型引数参照渡しされません。

パラメータ

buffer

転送されるバイト数を格納する Byte 型の配列

bytesTransferred

転送されるバイト数。

asyncResult

この非同期操作ステータス情報だけではなく任意のユーザー定義のデータ格納する IAsyncResult オブジェクト

戻り値
リモート ホストとの通信処理する Socket オブジェクト

例外例外
例外種類条件

NotSupportedException

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

ObjectDisposedException

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

ArgumentNullException

asyncResult が空です。

ArgumentException

BeginAccept への呼び出しasyncResult作成されませんでした

InvalidOperationException

EndAccept メソッドは既に呼び出されました。

SocketException

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

解説解説

EndAcceptBeginAccept呼び出し完了しますBeginAccept呼び出す前に、AsyncCallback デリゲートによって呼び出されるコールバック メソッド作成する必要があります。このコールバック メソッド個別スレッド実行されBeginAccept メソッド返され後で呼び出されます。このコールバック メソッドは、BeginAccept メソッドから返されasyncResult パラメータ受け取る必要があります

コールバック メソッド内では、asyncResult パラメータの AsyncState メソッド呼び出して接続試行されSocket取得しますSocket取得したら、EndAccept メソッド呼び出して接続試行正常に完了できます。このオーバーロードbuffer パラメータには、BeginAccept呼び出し受信されデータ格納されます。bytesTransferred パラメータには、その呼び出し転送されたバイト数が格納されます。

EndAccept メソッドは、受信接続キュー接続保留中の間ブロックしますEndAccept メソッド受信接続受け入れリモート ホストとのデータの送受信使用できる新しSocket返します

メモメモ

SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

使用例使用例

BeginAccept使用してソケット作成接続行いデータ最初10 バイト受け取コード例次に示しますコールバック デリゲートEndAccept呼び出し非同期要求終了します転送されたバイト数とデータは、このメソッドbuffer パラメータbytesTransferred パラメータ返されコンソールにも表示されます。

    // 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.EndAccept メソッド (IAsyncResult)

受信接続試行非同期的に受け入れ新しSocket作成してリモート ホスト通信処理します

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

Public Function EndAccept ( _
    asyncResult As IAsyncResult _
) As Socket
Dim instance As Socket
Dim asyncResult As IAsyncResult
Dim returnValue As Socket

returnValue = instance.EndAccept(asyncResult)
public Socket EndAccept (
    IAsyncResult asyncResult
)
public:
Socket^ EndAccept (
    IAsyncResult^ asyncResult
)
public Socket EndAccept (
    IAsyncResult asyncResult
)
public function EndAccept (
    asyncResult : IAsyncResult
) : Socket

パラメータ

asyncResult

この非同期操作ステータス情報だけではなく任意のユーザー定義のデータ格納する IAsyncResult。

戻り値
リモート ホストとの通信処理する Socket

例外例外
例外種類条件

ArgumentNullException

asyncResultnull 参照 (Visual Basic では Nothing) です。

ArgumentException

BeginAccept への呼び出しasyncResult作成されませんでした

SocketException

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

ObjectDisposedException

Socket閉じられています。

InvalidOperationException

EndAccept メソッドは既に呼び出されました。

NotSupportedException

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

解説解説

EndAcceptBeginAccept呼び出し完了しますBeginAccept呼び出す前に、AsyncCallback デリゲート実装するコールバック メソッド作成する必要があります。このコールバック メソッド個別スレッド実行されBeginAccept メソッド返され後で呼び出されます。このコールバック メソッドは、BeginAccept メソッドから返されasyncResult パラメータ受け取る必要があります

コールバック メソッド内では、asyncResult パラメータの AsyncState メソッド呼び出して接続試行されSocket取得しますSocket取得したら、EndAccept メソッド呼び出して接続試行正常に完了できます

EndAccept メソッドは、受信接続キュー接続保留中の間ブロックしますEndAccept メソッド受信接続受け入れリモート ホストとのデータの送受信使用できる新しSocket返します

メモメモ

SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

使用例使用例

非同期要求終了し受信接続要求受け入れ新しSocket作成するコード例次に示しますソケット使用した非同期通信を示すコード例全体については、「ソケットコード例」を参照してください

Public Shared Sub Listen_Callback(ar
 As IAsyncResult)
   allDone.Set()
   Dim s As Socket = CType(ar.AsyncState, Socket)
   Dim s2 As Socket = s.EndAccept(ar)
   Dim so2 As New StateObject()
   so2.workSocket = s2
   s2.BeginReceive(so2.buffer, 0, StateObject.BUFFER_SIZE, 0, New
 AsyncCallback(AddressOf Async_Send_Receive.Read_Callback), so2)
End Sub 'Listen_Callback

public static void Listen_Callback(IAsyncResult
 ar){
     allDone.Set();
     Socket s = (Socket) ar.AsyncState;
     Socket s2 = s.EndAccept(ar);
     StateObject so2 = new StateObject();
     so2.workSocket = s2;
     s2.BeginReceive(so2.buffer, 0, StateObject.BUFFER_SIZE,0,
                           new AsyncCallback(Async_Send_Receive.Read_Callback),
 so2);    
}
static void Listen_Callback( IAsyncResult^
 ar )
{
   allDone->Set();
   Socket^ s = safe_cast<Socket^>(ar->AsyncState);
   Socket^ s2 = s->EndAccept( ar );
   StateObject^ so2 = gcnew StateObject;
   so2->workSocket = s2;
   s2->BeginReceive( so2->buffer, 0, StateObject::BUFFER_SIZE, SocketFlags::None
,
      gcnew AsyncCallback( &Async_Send_Receive::Read_Callback ), so2 );
}
allDone.Set();
Socket s = (Socket)ar.get_AsyncState();
Socket s2 = s.EndAccept(ar);
StateObject so2 = new StateObject();
so2.workSocket = s2;
s2.BeginReceive(so2.buffer, 0, StateObject.BUFFER_SIZE,
    (SocketFlags)0, new AsyncCallback(Async_Send_Receive.Read_Callback)
,
    so2);
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
BeginAccept
AsyncCallback
AsyncState

Socket.EndAccept メソッド


Socket.EndAccept メソッド (Byte[], IAsyncResult)

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

受信接続試行非同期的に受け入れ新しSocket オブジェクト作成してリモート ホスト通信処理します。このメソッドは、転送される初期データ格納するバッファ返します

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

Public Function EndAccept ( _
    <OutAttribute> ByRef buffer As Byte(),
 _
    asyncResult As IAsyncResult _
) As Socket
Dim instance As Socket
Dim buffer As Byte()
Dim asyncResult As IAsyncResult
Dim returnValue As Socket

returnValue = instance.EndAccept(buffer, asyncResult)
public Socket EndAccept (
    out byte[] buffer,
    IAsyncResult asyncResult
)
public:
Socket^ EndAccept (
    [OutAttribute] array<unsigned char>^% buffer, 
    IAsyncResult^ asyncResult
)
public Socket EndAccept (
    /** @attribute OutAttribute() */ /** @ref */ byte[] buffer, 
    IAsyncResult asyncResult
)
JScript では、値型引数参照渡しされません。

パラメータ

buffer

転送されるバイト数を格納する Byte 型の配列

asyncResult

この非同期操作ステータス情報だけではなく任意のユーザー定義のデータ格納する IAsyncResult オブジェクト

戻り値
リモート ホストとの通信処理する Socket オブジェクト

例外例外
例外種類条件

NotSupportedException

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

ObjectDisposedException

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

ArgumentNullException

asyncResult が空です。

ArgumentException

BeginAccept への呼び出しasyncResult作成されませんでした

InvalidOperationException

EndAccept メソッドは既に呼び出されました。

SocketException

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

解説解説

EndAcceptBeginAccept呼び出し完了しますBeginAccept呼び出す前に、AsyncCallback デリゲートによって呼び出されるコールバック メソッド作成する必要があります。このコールバック メソッド個別スレッド実行されBeginAccept メソッド返され後で呼び出されます。

コールバック メソッド内では、asyncResult パラメータの AsyncState メソッド呼び出して接続試行されSocket取得しますSocket取得したら、EndAccept メソッド呼び出して接続試行正常に完了できます。このオーバーロードbuffer パラメータには、BeginAccept呼び出し受信されデータ格納されます。bytesTransferred パラメータには、その呼び出し転送されたバイト数が格納されます。

EndAccept メソッドは、受信接続キュー接続保留中の間ブロックしますEndAccept メソッド受信接続受け入れリモート ホストとのデータの送受信使用できる新しSocket返します

メモメモ

SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

使用例使用例

BeginAccept使用してソケット作成接続行いデータ最初10 バイト受け取コード例次に示しますコールバック デリゲートEndAccept呼び出し非同期要求終了します転送されたバイト数とデータは、このメソッドbuffer パラメータbytesTransferred パラメータ返されコンソールにも表示されます。

    // 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);
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



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

辞書ショートカット

すべての辞書の索引

「Socket.EndAccept」の関連用語

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

   

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



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

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

©2025 GRAS Group, Inc.RSS