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

Socket.BeginReceive メソッド (ジェネリック IList, SocketFlags, AsyncCallback, Object)

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

接続されている Socket からの非同期のデータ受信を開始します。

このメソッドは、CLS に準拠していません。  

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

<CLSCompliantAttribute(False)> _
Public Function BeginReceive ( _
    buffers As IList(Of ArraySegment(Of
 Byte)), _
    socketFlags As SocketFlags, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim buffers As IList(Of
 ArraySegment(Of Byte))
Dim socketFlags As SocketFlags
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginReceive(buffers, socketFlags, callback, state)
[CLSCompliantAttribute(false)] 
public IAsyncResult BeginReceive (
    IList<ArraySegment<byte>> buffers,
    SocketFlags socketFlags,
    AsyncCallback callback,
    Object state
)
[CLSCompliantAttribute(false)] 
public:
IAsyncResult^ BeginReceive (
    IList<ArraySegment<unsigned char>>^ buffers, 
    SocketFlags socketFlags, 
    AsyncCallback^ callback, 
    Object^ state
)
/** @attribute CLSCompliantAttribute(false) */ 
public IAsyncResult BeginReceive (
    IList<ArraySegment<byte>> buffers, 
    SocketFlags socketFlags, 
    AsyncCallback callback, 
    Object state
)
CLSCompliantAttribute(false) 
public function BeginReceive (
    buffers : IList<ArraySegment<byte>>, 
    socketFlags : SocketFlags, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

buffers

受信したデータのストレージ場所となる Byte 型の配列。

socketFlags

SocketFlags 値のビットごとの組み合わせ。

callback

操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。

state

受信操作に関する情報を格納するユーザー定義のオブジェクト。このオブジェクトは、操作の完了時に EndReceive デリゲートに渡されます。

戻り値
非同期の読み取りを参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

SocketException

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

ObjectDisposedException

Socket が閉じられています。

解説解説

非同期の BeginReceive 操作は、EndReceive メソッドを呼び出して終了させる必要があります。通常、このメソッドは callback デリゲートによって呼び出されます。

このメソッドは、操作が完了するまでブロックしません。操作が完了するまでブロックするには、Receive メソッド オーバーロードのいずれかを使用します。

保留中の BeginReceive をキャンセルするには、Close メソッドを呼び出します。

非同期プログラミング モデルの使用法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

メモメモ

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

メモメモ

このメンバは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。詳細については、「ネットワークのトレース」を参照してください。

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

Socket.BeginReceive メソッド (Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

接続されている Socket からの非同期のデータ受信を開始します。

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

Public Function BeginReceive ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    socketFlags As SocketFlags, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim buffer As Byte()
Dim offset As Integer
Dim size As Integer
Dim socketFlags As SocketFlags
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginReceive(buffer, offset, size, socketFlags, callback,
 state)
public IAsyncResult BeginReceive (
    byte[] buffer,
    int offset,
    int size,
    SocketFlags socketFlags,
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginReceive (
    array<unsigned char>^ buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginReceive (
    byte[] buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    AsyncCallback callback, 
    Object state
)
public function BeginReceive (
    buffer : byte[], 
    offset : int, 
    size : int, 
    socketFlags : SocketFlags, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

buffer

受信したデータのストレージ場所となる Byte 型の配列。

offset

受信データを格納する、bufferパラメータ内の、インデックス番号が 0 から始まる位置。

size

受信するバイト数。

socketFlags

SocketFlags 値のビットごとの組み合わせ。

callback

操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。

state

受信操作に関する情報を格納するユーザー定義のオブジェクト。このオブジェクトは、操作の完了時に EndReceive デリゲートに渡されます。

戻り値
非同期の読み取りを参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

SocketException

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

ObjectDisposedException

Socket が閉じられています。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offset が buffer の長さを超えています。

または

size が 0 未満です。

または

size が、buffer の長さから offset パラメータの値を引いた値を超えています。

解説解説

非同期の BeginReceive 操作は、EndReceive メソッドを呼び出して終了させる必要があります。通常、このメソッドは callback デリゲートによって呼び出されます。

このメソッドは、操作が完了するまでブロックしません。操作が完了するまでブロックするには、Receive メソッド オーバーロードのいずれかを使用します。

保留中の BeginReceive をキャンセルするには、Close メソッドを呼び出します。

非同期プログラミング モデルの使用法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

メモメモ

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

メモメモ

このメンバは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。詳細については、「ネットワークのトレース」を参照してください。

使用例使用例

接続されている Socket から、データの非同期の受信を開始するコード例を次に示します。

Public Class StateObject
   Public workSocket As Socket = Nothing
   Public const BUFFER_SIZE As
 Integer = 1024
   Public buffer(BUFFER_SIZE) As byte
   Public sb As New StringBuilder()
End Class 'StateObject
public class StateObject{
     public Socket workSocket = null;
     public const int BUFFER_SIZE
 = 1024;
     public byte[] buffer = new byte[BUFFER_SIZE];
     public StringBuilder sb = new StringBuilder();
}
public ref class StateObject
{
public:
   literal int BUFFER_SIZE = 1024;
   Socket^ workSocket;
   array<Byte>^ buffer;
   StringBuilder^ sb;
   StateObject() : workSocket( nullptr )
   {
      buffer = gcnew array<Byte>(BUFFER_SIZE);
      sb = gcnew StringBuilder;
   }
};
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);
Public Shared Sub Read_Callback(ar
 As IAsyncResult)
   Dim so As StateObject = CType(ar.AsyncState,
 StateObject)
   Dim s As Socket = so.workSocket
   
   Dim read As Integer =
 s.EndReceive(ar)
   
   If read > 0 Then
      so.sb.Append(Encoding.ASCII.GetString(so.buffer, 0, read))
      s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE, 0, New
 AsyncCallback(AddressOf Async_Send_Receive.Read_Callback), so)
   Else
      If so.sb.Length > 1 Then
         'All the data has been read, so displays it to the console
         Dim strContent As String
         strContent = so.sb.ToString()
         Console.WriteLine([String].Format("Read {0} byte from
 socket" + "data = {1} ", strContent.Length,
 strContent))
      End If
      s.Close()
   End If
End Sub 'Read_Callback
public static void Read_Callback(IAsyncResult
 ar){
    StateObject so = (StateObject) ar.AsyncState;
    Socket s = so.workSocket;

    int read = s.EndReceive(ar);

    if (read > 0) {
            so.sb.Append(Encoding.ASCII.GetString(so.buffer, 0, read));
            s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE, 0, 
                                     new AsyncCallback(Async_Send_Receive.Read_Callback),
 so);
    }
    else{
         if (so.sb.Length > 1) {
              //All of the data has been read, so displays it to the
 console
              string strContent;
              strContent = so.sb.ToString();
              Console.WriteLine(String.Format("Read {0} byte from socket"
 + 
                                 "data = {1} ", strContent.Length, strContent));
         }
         s.Close();
    }
}
static void Read_Callback( IAsyncResult^ ar
 )
{
   StateObject^ so = safe_cast<StateObject^>(ar->AsyncState);
   Socket^ s = so->workSocket;

   int read = s->EndReceive( ar );

   if ( read > 0 )
   {
      so->sb->Append( Encoding::ASCII->GetString( so->buffer, 0, read
 ) );
      s->BeginReceive( so->buffer, 0, StateObject::BUFFER_SIZE, SocketFlags::None
,
         gcnew AsyncCallback( &Async_Send_Receive::Read_Callback ), so );
   }
   else
   {
      if ( so->sb->Length > 1 )
      {
         //All of the data has been read, so displays it to the console
         String^ strContent = so->sb->ToString();
         Console::WriteLine( String::Format( "Read {0} byte from socket"
 +
            " data = {1} ", strContent->Length, strContent ) );
      }
      s->Close();
   }
}
StateObject so = (StateObject)ar.get_AsyncState();
Socket s = so.workSocket;
int read = s.EndReceive(ar);

if (read > 0) {
    so.sb.Append(Encoding.get_ASCII().GetString(so.buffer, 0, read));
    s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE,
        (SocketFlags)0, new AsyncCallback(Async_Send_Receive.
        Read_Callback), so);
}
else {
    if (so.sb.get_Length() > 1) {
        //All of the data has been read, so displays it to the console
        String strContent;
        strContent = so.sb.ToString();
        Console.WriteLine(String.Format("Read {0} byte from socket"
            + "data = {1} ", (Int32)strContent.get_Length(), 
            strContent));
    }
    s.Close();
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginReceive メソッド (ジェネリック IList, SocketFlags, SocketError, AsyncCallback, Object)

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

接続されている Socket からの非同期のデータ受信を開始します。

このメソッドは、CLS に準拠していません。  

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

<CLSCompliantAttribute(False)> _
Public Function BeginReceive ( _
    buffers As IList(Of ArraySegment(Of
 Byte)), _
    socketFlags As SocketFlags, _
    <OutAttribute> ByRef errorCode As
 SocketError, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim buffers As IList(Of
 ArraySegment(Of Byte))
Dim socketFlags As SocketFlags
Dim errorCode As SocketError
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginReceive(buffers, socketFlags, errorCode, callback, state)
[CLSCompliantAttribute(false)] 
public IAsyncResult BeginReceive (
    IList<ArraySegment<byte>> buffers,
    SocketFlags socketFlags,
    out SocketError errorCode,
    AsyncCallback callback,
    Object state
)
[CLSCompliantAttribute(false)] 
public:
IAsyncResult^ BeginReceive (
    IList<ArraySegment<unsigned char>>^ buffers, 
    SocketFlags socketFlags, 
    [OutAttribute] SocketError% errorCode, 
    AsyncCallback^ callback, 
    Object^ state
)
/** @attribute CLSCompliantAttribute(false) */ 
public IAsyncResult BeginReceive (
    IList<ArraySegment<byte>> buffers, 
    SocketFlags socketFlags, 
    /** @attribute OutAttribute() */ /** @ref */ SocketError errorCode, 
    AsyncCallback callback, 
    Object state
)
JScript では、値型の引数は参照渡しされません。

パラメータ

buffers

受信したデータのストレージ場所となる Byte 型の配列。

socketFlags

SocketFlags 値のビットごとの組み合わせ。

errorCode

ソケット エラーを格納する SocketError オブジェクト。

callback

操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。

state

受信操作に関する情報を格納するユーザー定義のオブジェクト。このオブジェクトは、操作の完了時に EndReceive デリゲートに渡されます。

戻り値
非同期の読み取りを参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

SocketException

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

ObjectDisposedException

Socket が閉じられています。

解説解説

非同期の BeginReceive 操作は、EndReceive メソッドを呼び出して終了させる必要があります。通常、このメソッドは callback デリゲートによって呼び出されます。

このメソッドは、操作が完了するまでブロックしません。操作が完了するまでブロックするには、Receive メソッド オーバーロードのいずれかを使用します。

保留中の BeginReceive をキャンセルするには、Close メソッドを呼び出します。

非同期プログラミング モデルの使用法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

メモメモ

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

メモメモ

このメンバは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。詳細については、「ネットワークのトレース」を参照してください。

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

Socket.BeginReceive メソッド (Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

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

接続されている Socket からの非同期のデータ受信を開始します。

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

Public Function BeginReceive ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    socketFlags As SocketFlags, _
    <OutAttribute> ByRef errorCode As
 SocketError, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim buffer As Byte()
Dim offset As Integer
Dim size As Integer
Dim socketFlags As SocketFlags
Dim errorCode As SocketError
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginReceive(buffer, offset, size, socketFlags, errorCode,
 callback, state)
public IAsyncResult BeginReceive (
    byte[] buffer,
    int offset,
    int size,
    SocketFlags socketFlags,
    out SocketError errorCode,
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginReceive (
    array<unsigned char>^ buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    [OutAttribute] SocketError% errorCode, 
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginReceive (
    byte[] buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    /** @attribute OutAttribute() */ /** @ref */ SocketError errorCode, 
    AsyncCallback callback, 
    Object state
)
JScript では、値型の引数は参照渡しされません。

パラメータ

buffer

受信したデータのストレージ場所となる Byte 型の配列。

offset

受信データを格納する buffer内の場所。

size

受信するバイト数。

socketFlags

SocketFlags 値のビットごとの組み合わせ。

errorCode

ソケット エラーを格納する SocketError オブジェクト。

callback

操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。

state

受信操作に関する情報を格納するユーザー定義のオブジェクト。このオブジェクトは、操作の完了時に EndReceive デリゲートに渡されます。

戻り値
非同期の読み取りを参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

buffer が null 参照 (Visual Basic では Nothing) です。

SocketException

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

ObjectDisposedException

Socket が閉じられています。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offset が buffer の長さを超えています。

または

size が 0 未満です。

または

size が、buffer の長さから offset パラメータの値を引いた値を超えています。

解説解説

非同期の BeginReceive 操作は、EndReceive メソッドを呼び出して終了させる必要があります。通常、このメソッドは callback デリゲートによって呼び出されます。

このメソッドは、操作が完了するまでブロックしません。操作が完了するまでブロックするには、Receive メソッド オーバーロードのいずれかを使用します。

保留中の BeginReceive をキャンセルするには、Close メソッドを呼び出します。

非同期プログラミング モデルの使用法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。

メモメモ

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

メモメモ

このメンバは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。詳細については、「ネットワークのトレース」を参照してください。

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

Socket.BeginReceive メソッド

接続されている Socket からの非同期のデータ受信を開始します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
Socket.BeginReceive (ジェネリック IList, SocketFlags, AsyncCallback, Object) 接続されている Socket からの非同期のデータ受信を開始します。
Socket.BeginReceive (ジェネリック IList, SocketFlags, SocketError, AsyncCallback, Object) 接続されている Socket からの非同期のデータ受信を開始します。
Socket.BeginReceive (Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 接続されている Socket からの非同期のデータ受信を開始します。

.NET Compact Framework によってサポートされています。

Socket.BeginReceive (Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) 接続されている Socket からの非同期のデータ受信を開始します。
参照参照

関連項目

Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
EndAccept
AsyncCallback
Connect
BeginReceiveFrom

その他の技術情報

Callback のサンプル
非同期クライアント ソケットの例
非同期サーバー ソケットの例



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

「Socket.BeginReceive」の関連用語

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

   

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



Socket.BeginReceiveのページの著作権

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

©2026 GRAS Group, Inc.RSS