Socket.BeginSendTo メソッド
アセンブリ: 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
戻り値
非同期の送信を参照する IAsyncResult。

例外の種類 | 条件 |
---|---|
ArgumentNullException | buffer が null 参照 (Visual Basic では Nothing) です。 または remoteEP が null 参照 (Visual Basic では Nothing) です。 |
SocketException | |
ArgumentOutOfRangeException | または または または |
ObjectDisposedException | |
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()); }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からSocket.BeginSendTo メソッドを検索する場合は、下記のリンクをクリックしてください。

- Socket.BeginSendTo メソッドのページへのリンク