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

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

または

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

SocketException

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

ArgumentOutOfRangeException

offset が 0 未満です。

または

offsetbuffer長さ超えてます。

または

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 のいずれかメソッド呼び出す必要があります最初に呼び出さないと、BeginSendToSocketExceptionスローます。BeginSendToremoteEP パラメータ無視しConnectBeginConnectAcceptBeginAcceptいずれかメソッド確立されEndPointデータ送信します

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

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

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サンプル


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

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

辞書ショートカット

すべての辞書の索引

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

   

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



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

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

©2025 GRAS Group, Inc.RSS