Socket.EndSendFile(IAsyncResult) Socket.EndSendFile(IAsyncResult) Socket.EndSendFile(IAsyncResult) Socket.EndSendFile(IAsyncResult) Method

定義

ファイルの保留中の非同期送信を終了します。Ends a pending asynchronous send of a file.

public:
 void EndSendFile(IAsyncResult ^ asyncResult);
public void EndSendFile (IAsyncResult asyncResult);
member this.EndSendFile : IAsyncResult -> unit
Public Sub EndSendFile (asyncResult As IAsyncResult)

パラメーター

asyncResult
IAsyncResult IAsyncResult IAsyncResult IAsyncResult

この非同期操作の状態情報を格納する IAsyncResult オブジェクト。An IAsyncResult object that stores state information for this asynchronous operation.

例外

このメソッドには Windows NT が必要です。Windows NT is required for this method.

Socket オブジェクトは閉じられています。The Socket object has been closed.

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

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の解説を参照してください。See remarks section below.

次のコード例は、作成し非同期通信用ソケットが接続し、リモート ホストにファイルの"text.txt"を非同期的に送信を開始します。The following code example creates and connects a socket for asynchronous communication and begins sending the file "text.txt" asynchronously to the remote host. コールバック デリゲート呼び出しEndSendFile転送を完了します。The callback delegate calls EndSendFile to complete the transmission.

   static void AsynchronousFileSend()
   {
      // Send a file to a remote device.
      // Establish the remote endpoint for the socket.
      IPHostEntry^ ipHostInfo = Dns::GetHostEntry( Dns::GetHostName() );
      IPAddress^ ipAddress = ipHostInfo->AddressList[ 0 ];
      IPEndPoint^ remoteEP = gcnew IPEndPoint( ipAddress,11000 );

      // Create a TCP/IP socket.
      Socket^ client = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );

      // Connect to the remote endpoint.
      client->BeginConnect( remoteEP, gcnew AsyncCallback( ConnectCallback ), client );

      // Wait for connect.
      connectDone->WaitOne();

      // There is a text file test.txt in the root directory.
      String^ fileName = "C:\\test.txt";

      // Send file fileName to the remote device.
      Console::WriteLine( fileName );
      client->BeginSendFile( fileName, gcnew AsyncCallback( FileSendCallback ), client );

      // Release the socket.
      client->Shutdown( SocketShutdown::Both );
      client->Close();
   }

private:
   static void FileSendCallback( IAsyncResult^ ar )
   {
      // Retrieve the socket from the state object.
      Socket^ client = dynamic_cast<Socket^>(ar->AsyncState);

      // Complete sending the data to the remote device.
      client->EndSendFile( ar );
      sendDone->Set();
   }

public static void AsynchronousFileSend()
{
    // Send a file to a remote device.
    
    // Establish the remote endpoint for the socket.
    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
    IPAddress ipAddress = ipHostInfo.AddressList[0];
    IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);

    // Create a TCP/IP socket.
    Socket client = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream, ProtocolType.Tcp);

    // Connect to the remote endpoint.
    client.BeginConnect(remoteEP, 
        new AsyncCallback(ConnectCallback), client);
        
    // Wait for connect.
    connectDone.WaitOne();

    // There is a text file test.txt in the root directory.
    string fileName = "C:\\test.txt";
  
    // Send file fileName to the remote device.
    Console.WriteLine(fileName);
    client.BeginSendFile(fileName, new AsyncCallback(FileSendCallback), client);

    // Release the socket.
    client.Shutdown(SocketShutdown.Both);
    client.Close();
}


private static void FileSendCallback(IAsyncResult ar)
{
    // Retrieve the socket from the state object.
    Socket client = (Socket) ar.AsyncState;

    // Complete sending the data to the remote device.
    client.EndSendFile(ar);
    sendDone.Set();
}

注釈

EndSendFile 開始された非同期送信操作が完了するとBeginSendFileします。EndSendFile completes the asynchronous send operation started in BeginSendFile.

呼び出しの前にBeginSendFile、実装するコールバック メソッドを作成する必要があります、AsyncCallbackを委任します。Before calling BeginSendFile, you must create a callback method that implements the AsyncCallback delegate. このコールバック メソッドは、別のスレッドで実行され、後にシステムによって呼び出されるBeginSendFileを返します。This callback method executes in a separate thread and is called by the system after BeginSendFile returns. コールバック メソッドが受け入れる必要があります、IAsyncResultによって返されるオブジェクト、BeginSendFileメソッドをパラメーターとして。The callback method must accept the IAsyncResult object returned by the BeginSendFile 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、呼び出すことができます、EndSendFile送信操作を正常に完了するメソッド。After obtaining the Socket, you can call the EndSendFile method to successfully complete the send operation.

コネクションレスのプロトコルを使用している場合EndSendFileデータグラムが送信されるまでブロックします。If you are using a connectionless protocol, EndSendFile blocks until the datagram is sent. 接続指向のプロトコルを使用している場合EndSendFileファイル全体が送信されるまでブロックします。If you are using a connection-oriented protocol, EndSendFile blocks until the entire file is 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. 正常に完了、BeginSendFileメソッドは、基になるシステムがネットワークのデータの送信バッファーする領域を持っていることを意味します。A successful completion of the BeginSendFile 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.

適用対象