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

Socket.ReceiveFrom メソッド (Byte[], SocketFlags, EndPoint)

指定した SocketFlags使用しデータグラム受信してデータバッファに格納します。さらに、エンドポイント格納します

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

Public Function ReceiveFrom ( _
    buffer As Byte(), _
    socketFlags As SocketFlags, _
    ByRef remoteEP As EndPoint _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim socketFlags As SocketFlags
Dim remoteEP As EndPoint
Dim returnValue As Integer

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

パラメータ

buffer

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

socketFlags

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

remoteEP

リモート サーバーを表す、参照渡しされた EndPoint

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

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

または

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

SocketException

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

ObjectDisposedException

Socket閉じられています。

SecurityException

コール スタック内の呼び出し元が、要求されたアクセス許可保持していません。

解説解説

ReceiveFrom メソッドは、buffer パラメータデータ読み込み正常に読み込まれたバイト数を返しデータ送信元のリモート ホスト エンドポイントキャプチャます。このメソッドは、不明なホストまたは複数ホストからコネクションレスデータグラム受信する場合に便利です。

このオーバーロードには、受信バッファ必要な SocketFlags、およびリモート ホストを表す EndPoint だけが必要です。オフセット既定値は 0 であり、サイズ既定値バッファ パラメータ長さです。

メモメモ

ReceiveFrom呼び出す前にBind メソッド使用してSocket明示的にローカル エンドポイントバインディングする必要があります。これをしない場合は、ReceiveFromSocketExceptionスローます。

コネクションレス プロトコル場合ReceiveFrom は、ローカル ネットワーク バッファ受信されデータグラムのうち、最初にキュー格納されデータグラム読み取ります。受信するデータグラムサイズbuffer より大きい場合ReceiveFrom メソッドできるだけ多くメッセージbuffer格納しますが、SocketExceptionスローます。信頼性のないプロトコル使用している場合超過データ失われます。信頼性のあるプロトコル使用している場合超過データサービス プロバイダによって保持されるため、十分に大きなバッファ使用して ReceiveFrom メソッド呼び出すことによって、超過データ取得できます

読み取ることができるデータ存在しない場合ReceiveFrom メソッド読み取ることができるデータ出現するまでブロックします。非ブロッキング モードにあり、プロトコル スタック バッファ使用できるデータない場合ReceiveFrom メソッドはすぐに終了しSocketExceptionスローます。Available プロパティ使用すると、読み取ることができるデータがあるかどうか確認できますAvailable が 0 以外の場合は、受信操作再試行してください

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

コネクション指向ソケット使用する場合ReceiveFrom は、buffer サイズまでの使用可能なデータをすべて読み取ります。リモート ホストShutdown メソッドSocket 接続シャットダウンし、使用できるデータがすべて受信されると、ReceiveFrom メソッドはすぐに完了して、0 バイト返します

メモメモ

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

メモメモ

ReceiveFrom に使用する EndPoint の AddressFamily は、SendTo に使用する EndPointAddressFamily一致させる必要があります

使用例使用例

リモート ホストからコネクションレスデータグラム受信するコード例次に示しますSocketFlags は、ReceiveFrom メソッド渡されます。

Public Shared Sub ReceiveFrom2()
 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New
 IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily,
 SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any,
 0)
    Dim senderRemote As EndPoint = CType(sender,
 EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte =
 New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, senderRemote)
    s.Close()

End Sub 'ReceiveFrom2

public static void ReceiveFrom2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0],
 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
    
    // Creates an IpEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
    s.Close();
}
static void ReceiveFrom2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000
 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   // This call blocks. 
   s->ReceiveFrom( msg, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom2()
{
    IPHostEntry hostEntry = Dns.Resolve(Dns.GetHostName());
    IPEndPoint endPoint =
        new IPEndPoint(hostEntry.get_AddressList()[0], 11000);

    Socket s = new Socket(endPoint.get_Address().get_AddressFamily()
,
        SocketType.Dgram, ProtocolType.Udp);
    // Creates an IpEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    ubyte[] msg = new ubyte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, senderRemote);
    s.Close();
} //ReceiveFrom2
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.ReceiveFrom メソッド (Byte[], Int32, Int32, SocketFlags, EndPoint)

指定した SocketFlags使用し指定したバイト数のデータ受信してデータ バッファ内の指定した位置格納します。さらに、エンドポイント格納します

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

Public Function ReceiveFrom ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    socketFlags As SocketFlags, _
    ByRef remoteEP As EndPoint _
) As Integer
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 returnValue As Integer

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

パラメータ

buffer

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

offset

受信データ格納する bufferパラメータ内の位置

size

受信するバイト数。

socketFlags

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

remoteEP

リモート サーバーを表す、参照渡しされた EndPoint

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

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

または

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

ArgumentOutOfRangeException

offset が 0 未満です。

または

offsetbuffer長さ超えてます。

または

size が 0 未満です。

または

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

SocketException

socketFlags が、値の有効な組み合わせではありません。

または

LocalEndPoint プロパティ設定されていませんでした

または

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

ObjectDisposedException

Socket閉じられています。

解説解説

ReceiveFrom メソッドは、buffer パラメータデータ読み込み正常に読み込まれたバイト数を返しデータ送信元のリモート ホスト エンドポイントキャプチャます。このメソッドは、不明なホストまたは複数ホストからコネクションレスデータグラム受信する場合に便利です。

コネクションレス プロトコル場合ReceiveFrom は、ローカル ネットワーク バッファ受信されデータグラムのうち、最初にキュー格納されデータグラム読み取ります。受信するデータグラムサイズbuffer より大きい場合ReceiveFrom メソッドできるだけ多くメッセージbuffer格納しますが、SocketExceptionスローます。信頼性のないプロトコル使用している場合超過データ失われます。信頼性のあるプロトコル使用している場合超過データサービス プロバイダによって保持されるため、十分に大きなバッファ使用して ReceiveFrom メソッド呼び出すことによって、超過データ取得できます

読み取ることができるデータ存在しない場合ReceiveFrom メソッド読み取ることができるデータ出現するまでブロックします。非ブロッキング モードにあり、プロトコル スタック バッファ使用できるデータない場合ReceiveFrom メソッドはすぐに終了しSocketExceptionスローます。Available プロパティ使用すると、読み取ることができるデータがあるかどうか確認できますAvailable が 0 以外の場合は、受信操作再試行してください

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

コネクション指向ソケット使用している場合ReceiveFrom は、size パラメータ指定したバイト数までの、使用可能なデータをすべて読み取ります。リモート ホストShutdown メソッドSocket 接続シャットダウンし、使用できるデータがすべて受信されると、ReceiveFrom メソッドはすぐに完了して、0 バイト返します

メモメモ

ReceiveFrom呼び出す前にBind メソッド使用してSocket明示的にローカル エンドポイントバインディングする必要があります。これをしない場合は、ReceiveFromSocketExceptionスローます。SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

メモメモ

ReceiveFrom に使用する EndPoint の AddressFamily は、SendTo に使用する EndPointAddressFamily一致させる必要があります

使用例使用例

リモート ホストからコネクションレスデータグラム受信するコード例次に示しますオフセットバッファ サイズ、および SocketFlagsReceiveFrom メソッド渡されます。

Public Shared Sub ReceiveFrom4()
 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New
 IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily,
 SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any,
 0)
    Dim senderRemote As EndPoint = CType(sender,
 EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    Dim msg() As Byte =
 New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks.  
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub 'ReceiveFrom4

public static void ReceiveFrom4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0],
 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
        
    // Creates an IpEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks.  
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
static void ReceiveFrom4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000
 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..."
 );
   // This call blocks.  
   s->ReceiveFrom( msg, 0, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom4()
{
    IPHostEntry hostEntry = Dns.Resolve(Dns.GetHostName());
    IPEndPoint endPoint =
        new IPEndPoint(hostEntry.get_AddressList()[0], 11000);

    Socket s = new Socket(endPoint.get_Address().get_AddressFamily()
,
        SocketType.Dgram, ProtocolType.Udp);
    // Creates an IpEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    ubyte msg[] = new ubyte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks.  
    s.ReceiveFrom(msg, 0, msg.length, SocketFlags.None, senderRemote);
    s.Close();
} //ReceiveFrom4
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.ReceiveFrom メソッド


Socket.ReceiveFrom メソッド (Byte[], EndPoint)

データグラム受信してデータバッファに格納します。さらに、エンドポイント格納します

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

Public Function ReceiveFrom ( _
    buffer As Byte(), _
    ByRef remoteEP As EndPoint _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim remoteEP As EndPoint
Dim returnValue As Integer

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

パラメータ

buffer

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

remoteEP

リモート サーバーを表す、参照渡しされた EndPoint

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

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

または

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

SocketException

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

ObjectDisposedException

Socket閉じられています。

SecurityException

コール スタック内の呼び出し元が、要求されたアクセス許可保持していません。

解説解説

ReceiveFrom メソッドは、buffer パラメータデータ読み込み正常に読み込まれたバイト数を返しデータ送信元のリモート ホスト エンドポイントキャプチャます。このメソッドは、不明なホストまたは複数ホストからコネクションレスデータグラム受信する場合に便利です。

このオーバーロードには、受信 buffer と、リモート ホストを表す EndPoint だけが必要です。バッファオフセット既定値は 0、サイズ既定値buffer パラメータ長さであり、socketFlags既定値は None です。

メモメモ

ReceiveFrom呼び出す前にBind メソッド使用してSocket明示的にローカル エンドポイントバインディングする必要があります。これをしない場合は、ReceiveFromSocketExceptionスローます。

コネクションレス プロトコル場合ReceiveFrom は、ローカル ネットワーク バッファ受信されデータグラムのうち、最初にキュー格納されデータグラム読み取ります。受信するデータグラムサイズbuffer より大きい場合ReceiveFrom メソッドできるだけ多くメッセージbuffer格納しますが、SocketExceptionスローます。信頼性のないプロトコル使用している場合超過データ失われます。信頼性のあるプロトコル使用している場合超過データサービス プロバイダによって保持されるため、十分に大きなバッファ使用して ReceiveFrom メソッド呼び出すことによって、超過データ取得できます

読み取ることができるデータ存在しない場合ReceiveFrom メソッド読み取ることができるデータ出現するまでブロックします。非ブロッキング モードにあり、プロトコル スタック バッファ使用できるデータない場合ReceiveFrom メソッドはすぐに終了しSocketExceptionスローます。Available プロパティ使用すると、読み取ることができるデータがあるかどうか確認できますAvailable が 0 以外の場合は、受信操作再試行してください

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

コネクション指向ソケット使用する場合ReceiveFrom は、buffer サイズまでの使用可能なデータをすべて読み取ります。リモート ホストShutdown メソッドSocket 接続シャットダウンし、使用できるデータがすべて受信されると、ReceiveFrom メソッドはすぐに完了して、0 バイト返します

メモメモ

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

メモメモ

ReceiveFrom に使用する EndPoint の AddressFamily は、SendTo に使用する EndPointAddressFamily一致させる必要があります

使用例使用例

リモート ホストからコネクションレスデータグラム受信するコード例次に示します

Public Shared Sub ReceiveFrom1()
 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New
 IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily,
 SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any,
 0)
    Dim senderRemote As EndPoint = CType(sender,
 EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte =
 New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    
    ' This call blocks. 
    s.ReceiveFrom(msg, senderRemote)
    s.Close()

End Sub 'ReceiveFrom1

public static void ReceiveFrom1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0],
 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
  
    // Creates an IPEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    
    // This call blocks. 
    s.ReceiveFrom(msg, ref senderRemote);
    s.Close();
}
static void ReceiveFrom1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000
 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   
   // This call blocks. 
   s->ReceiveFrom( msg, senderRemote );
   s->Close();
}
public static void ReceiveFrom1()
{
    IPHostEntry hostEntry = Dns.Resolve(Dns.GetHostName());
    IPEndPoint endPoint =
        new IPEndPoint(hostEntry.get_AddressList()[0], 11000);

    Socket s = new Socket(endPoint.get_Address().get_AddressFamily()
,
        SocketType.Dgram, ProtocolType.Udp);
    // Creates an IPEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    ubyte msg[] = new ubyte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, senderRemote);
    s.Close();
} //ReceiveFrom1
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.ReceiveFrom メソッド (Byte[], Int32, SocketFlags, EndPoint)

指定した SocketFlags使用し指定したバイト数のデータ受信してデータ バッファ格納します。さらに、エンドポイント格納します

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

Public Function ReceiveFrom ( _
    buffer As Byte(), _
    size As Integer, _
    socketFlags As SocketFlags, _
    ByRef remoteEP As EndPoint _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim size As Integer
Dim socketFlags As SocketFlags
Dim remoteEP As EndPoint
Dim returnValue As Integer

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

パラメータ

buffer

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

size

受信するバイト数。

socketFlags

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

remoteEP

リモート サーバーを表す、参照渡しされた EndPoint

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

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

または

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

ArgumentOutOfRangeException

size が 0 未満です。

または

sizebuffer長さ超えてます。

SocketException

socketFlags が、値の有効な組み合わせではありません。

または

LocalEndPoint プロパティ設定されていませんでした

または

Socketアクセス中にオペレーティング システム エラー発生しました

ObjectDisposedException

Socket閉じられています。

SecurityException

コール スタック内の呼び出し元が、要求されたアクセス許可保持していません。

解説解説

ReceiveFrom メソッドは、buffer パラメータデータ読み込み正常に読み込まれたバイト数を返しデータ送信元のリモート ホスト エンドポイントキャプチャます。このメソッドは、不明なホストまたは複数ホストからコネクションレスデータグラム受信する場合に便利です。

このオーバーロードには、受信バッファ受信するバイト数、必要な SocketFlags、およびリモート ホストを表す EndPoint だけが必要です。バッファオフセット既定値は 0 です。

コネクションレス プロトコル場合ReceiveFrom は、ローカル ネットワーク バッファ受信されデータグラムのうち、最初にキュー格納されデータグラム読み取ります。受信するデータグラムサイズbuffer より大きい場合ReceiveFrom メソッドできるだけ多くメッセージbuffer格納しますが、SocketExceptionスローます。信頼性のないプロトコル使用している場合超過データ失われます。信頼性のあるプロトコル使用している場合超過データサービス プロバイダによって保持されるため、十分に大きなバッファ使用して ReceiveFrom メソッド呼び出すことによって、超過データ取得できます

読み取ることができるデータ存在しない場合ReceiveFrom メソッド読み取ることができるデータ出現するまでブロックします。非ブロッキング モードにあり、プロトコル スタック バッファ使用できるデータない場合ReceiveFrom メソッドはすぐに終了しSocketExceptionスローます。Available プロパティ使用すると、読み取ることができるデータがあるかどうか確認できますAvailable が 0 以外の場合は、受信操作再試行してください

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

コネクション指向ソケット使用する場合ReceiveFrom は、size パラメータ指定したバイト数までの、使用可能なデータをすべて読み取ります。リモート ホストShutdown メソッドSocket 接続シャットダウンし、使用できるデータがすべて受信されると、ReceiveFrom メソッドはすぐに完了して、0 バイト返します

メモメモ

ReceiveFrom呼び出す前にBind メソッド使用してSocket明示的にローカル エンドポイントバインディングする必要があります。これをしない場合は、ReceiveFromSocketExceptionスローます。SocketException発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

メモメモ

ReceiveFrom に使用する EndPoint の AddressFamily は、SendTo に使用する EndPointAddressFamily一致させる必要があります

使用例使用例

リモート ホストからコネクションレスデータグラム受信するコード例次に示しますバッファ サイズSocketFlagsReceiveFrom メソッド渡されます。

Public Shared Sub ReceiveFrom3()
 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New
 IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily,
 SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any,
 0)
    Dim senderRemote As EndPoint = CType(sender,
 EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte =
 New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub 'ReceiveFrom3

public static void ReceiveFrom3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0],
 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
  
    // Creates an IPEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
static void ReceiveFrom3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000
 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..."
 );
   // This call blocks. 
   s->ReceiveFrom( msg, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom3()
{
    IPHostEntry hostEntry = Dns.Resolve(Dns.GetHostName());
    IPEndPoint endPoint =
        new IPEndPoint(hostEntry.get_AddressList()[0], 11000);

    Socket s = new Socket(endPoint.get_Address().get_AddressFamily()
,
        SocketType.Dgram, ProtocolType.Udp);
    // Creates an IPEndPoint to capture the identity of the sending
 host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);

    ubyte msg[] = new ubyte[256];
    Console.WriteLine("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, msg.length, SocketFlags.None, senderRemote);
    s.Close();
} //ReceiveFrom3
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



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

辞書ショートカット

すべての辞書の索引

「Socket.ReceiveFrom」の関連用語

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

   

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



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

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

©2025 GRAS Group, Inc.RSS