Socket.BeginSendFileとは? わかりやすく解説

Socket.BeginSendFile メソッド (String, AsyncCallback, Object)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

UseDefaultWorkerThread フラグ使用して接続されている Socket オブジェクトファイル fileName送信します

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

Public Function BeginSendFile ( _
    fileName As String, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim fileName As String
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginSendFile(fileName, callback, state)
public IAsyncResult BeginSendFile (
    string fileName,
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginSendFile (
    String^ fileName, 
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginSendFile (
    String fileName, 
    AsyncCallback callback, 
    Object state
)
public function BeginSendFile (
    fileName : String, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

fileName

送信するファイルパスと名前を格納する文字列。このパラメータは、null 参照 (Visual Basic では Nothing) の場合あります

callback

AsyncCallback デリゲート

state

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

戻り値
非同期送信を表す IAsyncResult オブジェクト

例外例外
例外種類条件

ObjectDisposedException

Socket オブジェクト閉じられています。

NotSupportedException

ソケットリモート ホスト接続されていません。

FileNotFoundException

ファイル fileName が見つかりませんでした

SocketException

ソケットへのアクセス試みているときにエラー発生しました。以下の解説参照してください

解説解説

このオーバーロードは、接続されているソケットファイル fileName送信しますfileNameローカル ディレクトリ格納されている場合は、ファイルの名前だけで識別できますそれ以外場合は、完全パスファイルの名前を指定する必要がありますワイルドカード ("..\\myfile.txt") および UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされます。ファイルが見つからない場合は、例外 FileNotFoundExceptionスローさます。

このメソッドは、Windows Sockets 2 API にある TransmitFile 関数使用しますTransmitFile 関数フラグ詳細については、MSDN ライブラリWindows Sockets のドキュメント参照してください

BeginSendFile メソッドは、Connect、BeginConnect、Accept、および BeginAccept の各メソッド確立されリモート ホストへの非同期送信操作開始します最初に AcceptBeginAcceptConnect、または BeginConnect呼び出さないと、BeginSendFile例外スローます。BeginSendFile メソッド呼び出すと、個別実行スレッド内でファイル送信できます

操作完了するには、AsyncCallback デリゲート パラメータによって呼び出されるコールバック メソッド作成できます。これを行うには、少なくとも、通信使用されている Socket オブジェクトstate パラメータ格納されている必要があります。他の情報コールバック必要な場合は、クラスまたは構造体作成して Socket などの必要な情報保持します。このカスタム オブジェクトインスタンスを、state パラメータ使用して BeginSendFile メソッド渡します

コールバック メソッドは、EndSendFile メソッド呼び出す必要がありますアプリケーションBeginSendFile呼び出すと、指定したコールバック メソッド個別スレッド使用して実行されEndSendFile は、Socketファイル全体送信する例外スローするまでブロックしますコールバック メソッド記述に関する追加情報については、「Callbackサンプル」を参照してください

BeginSendFile は、コネクション指向プロトコル想定していますが、Connect メソッドまたは BeginConnect メソッド呼び出して既定リモート ホスト確立しておけば、コネクションレスプロトコルでも使用できますコネクションレスプロトコル使用している場合は、ファイルサイズが、基になるサービス プロバイダ最大パケット サイズ超えないことを確認する必要があります最大パケット サイズ超える場合は、データグラム送信されず、BeginSendFile によって SocketException 例外スローさます。

メモメモ

SocketException 例外発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

使用例使用例

非同期通信ソケット作成して接続するコード例次に示します。まず、ファイル "text.txt" がリモート ホストに対して非同期的に送信されます。コールバック デリゲートEndSendFile呼び出し伝送完了します

public static void AsynchronousFileSend()
{
    // Send a file to a remote device.
    
    // Establish the remote endpoint for the socket.
    IPHostEntry ipHostInfo = Dns.Resolve(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();
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginSendFile メソッド (String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

接続されSocket オブジェクトに、ファイルデータバッファ非同期的に送信します

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

Public Function BeginSendFile ( _
    fileName As String, _
    preBuffer As Byte(), _
    postBuffer As Byte(), _
    flags As TransmitFileOptions, _
    callback As AsyncCallback, _
    state As Object _
) As IAsyncResult
Dim instance As Socket
Dim fileName As String
Dim preBuffer As Byte()
Dim postBuffer As Byte()
Dim flags As TransmitFileOptions
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginSendFile(fileName, preBuffer, postBuffer, flags, callback,
 state)
public IAsyncResult BeginSendFile (
    string fileName,
    byte[] preBuffer,
    byte[] postBuffer,
    TransmitFileOptions flags,
    AsyncCallback callback,
    Object state
)
public:
IAsyncResult^ BeginSendFile (
    String^ fileName, 
    array<unsigned char>^ preBuffer, 
    array<unsigned char>^ postBuffer, 
    TransmitFileOptions flags, 
    AsyncCallback^ callback, 
    Object^ state
)
public IAsyncResult BeginSendFile (
    String fileName, 
    byte[] preBuffer, 
    byte[] postBuffer, 
    TransmitFileOptions flags, 
    AsyncCallback callback, 
    Object state
)
public function BeginSendFile (
    fileName : String, 
    preBuffer : byte[], 
    postBuffer : byte[], 
    flags : TransmitFileOptions, 
    callback : AsyncCallback, 
    state : Object
) : IAsyncResult

パラメータ

fileName

送信されるファイルパスと名前を格納する文字列。このパラメータは、null 参照 (Visual Basic では Nothing) の場合あります

preBuffer

ファイル送信される前に送信されるデータ格納する Byte 配列。このパラメータは、null 参照 (Visual Basic では Nothing) の場合あります

postBuffer

ファイル送信され後で送信されるデータ格納する Byte 配列。このパラメータは、null 参照 (Visual Basic では Nothing) の場合あります

flags

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

callback

このオプション完了時に呼び出される AsyncCallback デリゲート。このパラメータは、null 参照 (Visual Basic では Nothing) の場合あります

state

この要求ステータス情報格納するユーザー定義のオブジェクト。このパラメータは、null 参照 (Visual Basic では Nothing) の場合あります

戻り値
非同期操作を表す IAsyncResult オブジェクト

例外例外
例外種類条件

ObjectDisposedException

Socket オブジェクト閉じられています。

SocketException

ソケットへのアクセス試みているときにエラー発生しました。以下の解説参照してください

NotSupportedException

オペレーティング システムWindows NT 以降ではありません。

または

ソケットリモート ホスト接続されていません。

FileNotFoundException

ファイル fileName が見つかりませんでした

解説解説

このオーバーロードには、送信するファイルの名前と TransmitFileOptions の値のビットごとの組み合わせが必要です。preBuffer パラメータには、ファイル前に送信するデータ格納しますpostBuffer には、ファイルの後に送信するデータ格納しますfileNameローカル ディレクトリ格納されている場合は、ファイルの名前だけで識別できますそれ以外場合は、完全パスファイルの名前を指定する必要がありますワイルドカード ("..\\myfile.txt") および UNC 共有名 ("\\\\shared directory\\myfile.txt") がサポートされます。ファイルが見つからない場合は、例外 FileNotFoundExceptionスローさます。

flags パラメータによって、ファイル転送に関する追加情報と共に Windows Sockets サービス プロバイダ提供されます。このパラメータ使用方法詳細については、TransmitFileOptionsトピック参照してください

このメソッドは、Windows Sockets 2 API にある TransmitFile 関数使用しますTransmitFile 関数フラグ詳細については、MSDN ライブラリWindows Sockets のドキュメント参照してください

BeginSendFile メソッドは、Connect、BeginConnect、Accept、および BeginAccept の各メソッド確立されリモート ホストへの非同期送信操作開始します最初に AcceptBeginAcceptConnect、または BeginConnect呼び出さないと、BeginSendFile例外スローます。BeginSendFile メソッド呼び出すと、個別実行スレッド内でファイル送信できます

操作完了するには、AsyncCallback デリゲート パラメータによって呼び出されるコールバック メソッド作成できます。これを行うには、少なくとも、通信使用されている Socket オブジェクトstate パラメータ格納されている必要があります。他の情報コールバック必要な場合は、クラスまたは構造体作成して Socket などの必要な情報保持します。このカスタム オブジェクトインスタンスを、state パラメータ使用して BeginSendFile メソッド渡します

コールバック メソッドは、EndSendFile メソッド呼び出す必要がありますアプリケーションBeginSendFile呼び出すと、指定したコールバック メソッド個別スレッド使用して実行されEndSendFile は、Socketファイル全体送信する例外スローするまでブロックしますコールバック メソッド記述に関する追加情報については、「Callbackサンプル」を参照してください

BeginSendFile は、コネクション指向プロトコル想定していますが、Connect メソッドまたは BeginConnect メソッド呼び出して既定リモート ホスト確立しておけば、コネクションレスプロトコルでも使用できますコネクションレスプロトコル使用している場合は、ファイルサイズが、基になるサービス プロバイダ最大パケット サイズ超えないことを確認する必要もあります最大パケット サイズ超える場合は、データグラム送信されず、BeginSendFile によって SocketException 例外スローさます。

メモメモ

SocketException 例外発生した場合は、SocketException.ErrorCode プロパティ使用して具体的なエラー コード取得してください。このコード取得したら、Windows Socket Version 2 API エラー コードドキュメントエラー詳細情報確認してください。これは MSDN ライブラリから入手できます

使用例使用例

非同期通信ソケット作成して接続しリモート ホストファイル "text.txt" の非同期的な送信開始するコード例次に示します。この例では、データpreBuffer および postBuffer作成されて、ファイルと共に送信されます。また、既定TransmitFileOptions 値が使用されます。コールバック デリゲートEndSendFile呼び出し伝送完了します

public static void AsynchronousFileSendWithBuffers()
{
    // Send a file asynchronously to the remote device. Send a buffer
 before the file and a buffer afterwards.
    
    // Establish the remote endpoint for the socket.
    IPHostEntry ipHostInfo = Dns.Resolve(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();

    // Send a file fileName to the remote device with preBuffer and
 postBuffer data.
    // Create the preBuffer data.
    string string1 = String.Format("This is text data that
 precedes the file.{0}", Environment.NewLine);
    byte[] preBuf = Encoding.ASCII.GetBytes(string1);

    // Create the postBuffer data.
    string string2 = String.Format("This is text data that
 will follow the file.{0}", Environment.NewLine);
    byte[] postBuf = Encoding.ASCII.GetBytes(string2);

    // There is a file test.txt in the root directory.
    string fileName = "C:\\test.txt";
    
    //Send file fileName with buffers and default flags to the remote
 device.
    Console.WriteLine(fileName);
    client.BeginSendFile(fileName, preBuf, postBuf, 0, new AsyncCallback(AsynchronousFileSendCallback),
 client);

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


private static void AsynchronousFileSendCallback(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();
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.BeginSendFile メソッド

接続されSocket オブジェクトに、ファイル非同期的に送信します
オーバーロードの一覧オーバーロードの一覧

名前 説明
Socket.BeginSendFile (String, AsyncCallback, Object) UseDefaultWorkerThread フラグ使用して接続されている Socket オブジェクトファイル fileName送信します
Socket.BeginSendFile (String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object) 接続されSocket オブジェクトに、ファイルデータバッファ非同期的に送信します
参照参照

関連項目

Socket クラス
Socket メンバ
System.Net.Sockets 名前空間


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

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

辞書ショートカット

すべての辞書の索引

「Socket.BeginSendFile」の関連用語

Socket.BeginSendFileのお隣キーワード
検索ランキング

   

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



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

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

©2025 GRAS Group, Inc.RSS