Socket.BeginReceiveFrom メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > Socket.BeginReceiveFrom メソッドの意味・解説 

Socket.BeginReceiveFrom メソッド

指定したネットワーク デバイスから、データ非同期受信開始します

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

Public Function BeginReceiveFrom ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    socketFlags As SocketFlags, _
    ByRef remoteEP As EndPoint, _
    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 remoteEP As EndPoint
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

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

パラメータ

buffer

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

offset

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

size

受信するバイト数。

socketFlags

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

remoteEP

データソースを表す EndPoint

callback

AsyncCallback デリゲート

state

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

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

例外例外
例外種類条件

ArgumentNullException

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

または

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

SocketException

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

ArgumentOutOfRangeException

offset が 0 未満です。

または

offsetbuffer長さ超えてます。

または

size が 0 未満です。

または

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

ObjectDisposedException

Socket閉じられています。

SecurityException

コール スタックの上位にある呼び出し元が、要求され操作アクセス許可保持していません。

解説解説

BeginReceiveFrom メソッドは、リモート ホストからのコネクションレスデータグラム非同期読み取り開始しますBeginReceiveFrom メソッド呼び出すと、個別実行スレッド内でデータ受信できます

AsyncCallback デリゲート実装するコールバック メソッド作成し、その名前を BeginReceiveFrom メソッドに渡すことができます。これを行うには、少なくとも、通信使用される接続済みまたは既定Socket が、state パラメータ格納されている必要があります。またコールバックに他の情報必要な場合は、小さなクラス作成して Socket および必要な情報保持させることができます。この場合、このクラスインスタンスを、state パラメータ使用して BeginReceiveFrom メソッド渡します

コールバック メソッドは EndReceiveFrom メソッド呼び出す必要がありますアプリケーションBeginReceiveFrom呼び出すと、指定したコールバック メソッド個別スレッド使用して実行されEndReceiveFrom は、Socketデータ読み取る例外スローするまでブロックしますBeginReceiveFrom メソッド呼び出してから元のスレッドブロックする場合は、WaitHandle.WaitOne を使用します。元のスレッド実行継続させるには、コールバック メソッドの T:System.Threading.ManualResetEvent で Set メソッド呼び出します。コールバック メソッド記述に関する追加情報については、「Callbackサンプル」を参照してください

メモメモ

BeginReceiveFrom呼び出す前にBind メソッド使用してSocket明示的にローカル エンドポイントバインドする必要があります。この操作行わないと、BeginReceiveFromSocketExceptionスローます。

このメソッドは、buffer パラメータデータ読み込みデータ送信元のリモート ホスト エンドポイントキャプチャます。このエンドポイント取得方法については、EndReceiveFromトピック参照してください。このメソッドは、不明なホストまたは複数ホストからコネクションレスデータグラム非同期的に受信する場合に便利です。この場合BeginReceiveFrom は、ローカル ネットワーク バッファ受信されデータグラムのうち、最初にキュー格納されデータグラム読み取ります。受信するデータグラムサイズbuffer より大きい場合BeginReceiveFrom メソッドできるだけ多くメッセージbuffer格納しますが、SocketExceptionスローます。信頼性のないプロトコル使用している場合超過データ失われます。信頼性のあるプロトコル使用している場合超過データサービス プロバイダによって保持されるため、十分に大きなバッファ使用して BeginReceiveFrom メソッド呼び出すことによって、超過データ取得できます

BeginReceiveFromコネクションレスプロトコル想定していますが、コネクション指向プロトコルにも使用できます。この場合は、Connect メソッドや BeginConnect メソッド呼び出してリモート ホストとの接続確立するか、Accept メソッドまたは BeginAccept メソッド呼び出して受信接続要求受け入れる必要があります接続確立または受け入れ前に BeginReceiveFrom メソッド呼び出すと、SocketException発生しますまた、BeginReceiveFrom呼び出す前にコネクションレス プロトコル既定リモート ホスト確立することもできますいずれの場合も、BeginReceiveFrom メソッドremoteEP パラメータ無視し接続されているリモート ホストまたは既定リモート ホストからのデータだけを受信します

コネクション指向ソケット使用する場合BeginReceiveFrom は、size パラメータ指定したバイト数までの、使用可能なデータをすべて読み取ります。

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

メモメモ

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

使用例使用例

リモート ホストからコネクションレスデータグラム非同期的に受け取コード例次に示します

   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.DGram, ProtocolType.Udp)
   
   Dim sender As New IPEndPoint(IPAddress.Any,
 0)
   Dim tempRemoteEP As EndPoint = CType(sender,
 EndPoint)
   s.Connect(sender)
   Try
      While True
         allDone.Reset()
         Dim so2 As New
 StateObject()
         so2.workSocket = s
         Console.WriteLine("Attempting to Receive data from host.contoso.com")
         
         s.BeginReceiveFrom(so2.buffer, 0, StateObject.BUFFER_SIZE, 0, tempRemoteEP,
 New AsyncCallback(AddressOf Async_Send_Receive.ReceiveFrom_Callback),
 so2)
         allDone.WaitOne()
      End While
   Catch e As Exception
      Console.WriteLine(e.ToString())
   End Try
End Sub 'ReceiveFrom
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

   Socket s = new Socket(lep.Address.AddressFamily,
                                  SocketType.Dgram,
                                     ProtocolType.Udp);
   
   IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
   EndPoint tempRemoteEP = (EndPoint)sender;
   s.Connect(sender);
   
   try{
        while(true){
             allDone.Reset();
             StateObject so2 = new StateObject();
             so2.workSocket = s;
             Console.WriteLine("Attempting to Receive data from host.contoso.com");
         
             s.BeginReceiveFrom(so2.buffer, 0, StateObject.BUFFER_SIZE,0, ref tempRemoteEP
,
                                   new AsyncCallback(Async_Send_Receive.ReceiveFrom_Callback),
 so2);    
             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::Dgram,
      ProtocolType::Udp);
   
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any, 0 );
   EndPoint^ tempRemoteEP = (EndPoint^)( sender );
   s->Connect( sender );
   
   try{
      while(true){
         allDone->Reset();
         StateObject^ so2 = gcnew StateObject();
             so2->workSocket = s;
             Console::WriteLine( "Attempting to Receive data from host.contoso.com"
 );
         
             s->BeginReceiveFrom( so2->buffer, 0, StateObject::BUFFER_SIZE,
 SocketFlags::None, tempRemoteEP,
            gcnew AsyncCallback( &Async_Send_Receive::ReceiveFrom_Callback),
 so2);    
             allDone->WaitOne();
        }
   }
   catch ( Exception^ e )
   {
        Console::WriteLine( e );
   }
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からSocket.BeginReceiveFrom メソッドを検索した結果を表示しています。
Weblioに収録されているすべての辞書からSocket.BeginReceiveFrom メソッドを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からSocket.BeginReceiveFrom メソッド を検索

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

辞書ショートカット

すべての辞書の索引

Socket.BeginReceiveFrom メソッドのお隣キーワード
検索ランキング

   

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



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

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

©2025 GRAS Group, Inc.RSS