Socket.EndSendTo(IAsyncResult) メソッド


特定の場所への、保留中の非同期送信を終了します。Ends a pending asynchronous send to a specific location.

 int EndSendTo(IAsyncResult ^ asyncResult);
 int EndSendTo(IAsyncResult ^ result);
public int EndSendTo (IAsyncResult asyncResult);
public int EndSendTo (IAsyncResult result);
member this.EndSendTo : IAsyncResult -> int
member this.EndSendTo : IAsyncResult -> int
Public Function EndSendTo (asyncResult As IAsyncResult) As Integer
Public Function EndSendTo (result As IAsyncResult) As Integer



この非同期操作の状態情報およびユーザー定義データを格納する IAsyncResultAn IAsyncResult that stores state information and any user defined data for this asynchronous operation.



正常に完了した場合は送信したバイト数。それ以外の場合は無効な Socket エラー。If successful, the number of bytes sent; otherwise, an invalid Socket error.


asyncResultnullです。asyncResult is null.

BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) メソッドへの呼び出しで asyncResult が返されませんでした。asyncResult was not returned by a call to the BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) method.

EndSendTo(IAsyncResult) が、非同期送信のために以前に呼び出されています。EndSendTo(IAsyncResult) was previously called for the asynchronous send.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

次のコード例では、特定の場所への非同期送信を終了します。The following code example ends an asynchronous send to a specific location.

StateObject^ so = safe_cast<StateObject^>(ar->AsyncState);
Socket^ s = so->workSocket;

int send = s->EndSendTo( ar );

Console::WriteLine( "The size of the message sent was : {0}", send );

StateObject so = (StateObject) ar.AsyncState;
Socket s = so.workSocket;

int send = s.EndSendTo(ar);

   Console.WriteLine("The size of the message sent was :" + send.ToString());

   Dim so As StateObject = CType(ar.AsyncState, StateObject)
   Dim s As Socket = so.workSocket
   Dim send As Integer = s.EndSendTo(ar)
   Console.WriteLine(("The size of the message sent was :" + send.ToString()))
End Sub


EndSendTo で開始された非同期の送信操作を完了 BeginSendTo します。EndSendTo completes the asynchronous send operation started in BeginSendTo.

を呼び出す前に BeginSendTo 、デリゲートを実装するコールバックメソッドを作成する必要があり AsyncCallback ます。Before calling BeginSendTo, you need to create a callback method that implements the AsyncCallback delegate. このコールバックメソッドは、別のスレッドで実行され、が返された後にシステムによって呼び出され BeginReceive ます。This callback method executes in a separate thread and is called by the system after BeginReceive returns. コールバックメソッドは、 IAsyncResult BeginSendTo パラメーターとしてメソッドによって返されたを受け入れる必要があります。The callback method must accept the IAsyncResult returned by the BeginSendTo method as a parameter.

コールバックメソッド内で、 AsyncState パラメーターのメソッドを呼び出して IAsyncResult 、送信元を取得し Socket ます。Within the callback method, call the AsyncState method of the IAsyncResult parameter to obtain the sending Socket. を取得した後 Socket 、メソッドを呼び出して EndSendTo 送信操作を正常に完了し、送信されたバイト数を返すことができます。After obtaining the Socket, you can call the EndSendTo method to successfully complete the send operation and return the number of bytes sent.

コネクションレスプロトコルを使用している場合、 EndSendTo はデータグラムが送信されるまでブロックします。If you are using a connectionless protocol, EndSendTo will block until the datagram is sent. 接続指向プロトコルを使用している場合、 EndSendTo は、要求されたバイト数が送信されるまでブロックします。If you are using a connection-oriented protocol, EndSendTo will block until the requested number of bytes are sent. 送信したデータがネットワークに直ちに表示される保証はありません。There is no guarantee that the data you send will appear on the network immediately. ネットワークの効率を向上させるために、基になるシステムは、大量の送信データが収集されるまで転送を遅らせます。To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. メソッドが正常に終了すると BeginSendTo いうことは、基になるシステムにネットワーク送信用のデータをバッファーするための余裕があることを意味します。A successful completion of the BeginSendTo method means that the underlying system has had room to buffer your data for a network send.


を受け取った場合は、プロパティを使用して、 SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.


このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.