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

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

Socket.BeginSendTo メソッド

特定のリモート ホストにデータを非同期的に送信します。

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

Public Function BeginSendTo ( _
    buffer As Byte(), _
    offset As Integer, _
    size As Integer, _
    socketFlags As SocketFlags, _
    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.BeginSendTo(buffer, offset, size, socketFlags, remoteEP, callback,
 state)
public IAsyncResult BeginSendTo (
    byte[] buffer,
    int offset,
    int size,
    SocketFlags socketFlags,
    EndPoint remoteEP,
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginSendTo (
    array<unsigned char>^ buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    EndPoint^ remoteEP, 
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginSendTo (
    byte[] buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags, 
    EndPoint remoteEP, 
    AsyncCallback callback, 
    Object state
)
public function BeginSendTo (
    buffer : byte[], 
    offset : int, 
    size : int, 
    socketFlags : SocketFlags, 
    remoteEP : EndPoint, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

buffer

送信するデータを格納する Byte 型の配列。

offset

データ送信を開始する、buffer 内の、インデックス番号が 0 から始まる位置。

size

送信するバイト数。

socketFlags

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

remoteEP

リモート デバイスを表す EndPoint。

callback

AsyncCallback デリゲート。

state

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

戻り値
非同期の送信を参照する IAsyncResult。

例外例外
例外の種類条件

ArgumentNullException

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

または

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

SocketException

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

ArgumentOutOfRangeException

offset が 0 未満です。

または

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

または

size が 0 未満です。

または

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

ObjectDisposedException

Socket は閉じられています。

SecurityException

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

解説解説

BeginSendTo メソッドは、remoteEP パラメータで指定されたリモート ホストへの非同期送信操作を開始します。BeginSendTo メソッドを呼び出すと、個別の実行スレッド内でデータを送信できます。BeginSendTo は、コネクションレスのプロトコルを想定していますが、コネクションレスのプロトコルとコネクション指向のプロトコルの両方で使用できます。

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

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

コネクション指向のプロトコルを使用している場合は、最初に Connect、BeginConnect、Accept、BeginAccept のいずれかのメソッドを呼び出す必要があります。最初に呼び出さないと、BeginSendTo は SocketException をスローします。BeginSendTo は remoteEP パラメータを無視し、Connect、BeginConnect、Accept、BeginAccept のいずれかのメソッドで確立された EndPoint にデータを送信します。

コネクションレスのプロトコルを使用している場合は、SendTo を呼び出す前に Connect メソッドまたは BeginConnect メソッドで既定のリモート ホストを確立する必要はありません。これは、BeginSend メソッドを呼び出す場合にだけ必要です。SendTo を呼び出す前に Connect または BeginConnect を呼び出した場合、remoteEP パラメータはその送信操作でだけ指定した既定のリモート ホストをオーバーライドします。また、Bind メソッドを呼び出す必要もありません。この場合は、基になるサービス プロバイダが最も適切なローカル ネットワーク アドレスとポート番号を割り当てます。基になるサービス プロバイダによって空きポートが割り当てられるようにする場合は、ポート番号に 0 を使用します。割り当てられたローカル ネットワーク アドレスおよびポート番号を特定する必要がある場合は、EndSendTo メソッドが正常に終了した後に LocalEndPoint プロパティを使用できます。

データをブロードキャスト アドレスに送信する場合は、最初に SetSocketOption メソッドを呼び出し、ソケット オプションを SocketOptionName.Broadcast に設定する必要があります。また、バッファのサイズが、基になるサービス プロバイダの最大パケット サイズを超えないことを確認する必要もあります。最大サイズを超えている場合、データグラムは送信されず、EndSendTo は SocketException をスローします。

DontRoute フラグを socketflags パラメータとして指定した場合、送信しようとしているデータはルーティングされません。

メモメモ

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.Stream, ProtocolType.Tcp)
   Try
      
      While True
         allDone.Reset()
         
         Dim buff As Byte()
 = Encoding.ASCII.GetBytes("This is a test")
         
         Console.WriteLine("Sending Message Now..")
         s.BeginSendTo(buff, 0, buff.Length, 0, lep, New AsyncCallback(AddressOf
 Async_Send_Receive.SendTo_Callback), s)
         
         allDone.WaitOne()
      End While
   Catch e As Exception
      Console.WriteLine(e.ToString())
   End Try
End Sub 'SendTo
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{
      
             while(true){
             allDone.Reset();

             byte[] buff = Encoding.ASCII.GetBytes("This is a test");
             
             Console.WriteLine("Sending Message Now..");
             s.BeginSendTo(buff, 0, buff.Length, 0, lep, new AsyncCallback(Async_Send_Receive.SendTo_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
{
   while ( true )
   {
      allDone->Reset();

      array<Byte>^ buff = Encoding::ASCII->GetBytes( "This is a test"
 );

      Console::WriteLine( "Sending Message Now.." );
      s->BeginSendTo( buff, 0, buff->Length, SocketFlags::None, lep,
         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 {
    while (true) {
        allDone.Reset();
        ubyte buff[] = Encoding.get_ASCII().GetBytes("This is a test");

        Console.WriteLine("Sending Message Now..");
        s.BeginSendTo(buff, 0, buff.length, (SocketFlags)0, lep,
            new AsyncCallback(Async_Send_Receive.SendTo_Callback),
 s);

        allDone.WaitOne();
    }
}
catch (System.Exception e) {
    Console.WriteLine(e.ToString());
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Socket クラス
Socket メンバ
System.Net.Sockets 名前空間
EndSendTo
AsyncCallback
Connect
LocalEndPoint
Broadcast
SetSocketOption
その他の技術情報
Callback のサンプル



英和和英テキスト翻訳

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

辞書ショートカット

すべての辞書の索引

Socket.BeginSendTo メソッドのお隣キーワード

   

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



Socket.BeginSendTo メソッドのページの著作権

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

©2026 GRAS Group, Inc.RSS