Bagikan melalui


Socket.BeginSendFile Metode

Definisi

Mengirim file secara asinkron ke objek yang tersambung Socket .

Overload

BeginSendFile(String, AsyncCallback, Object)

Mengirim file fileName ke objek yang tersambung Socket menggunakan UseDefaultWorkerThread bendera .

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Mengirim file dan buffer data secara asinkron ke objek yang tersambung Socket .

BeginSendFile(String, AsyncCallback, Object)

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Mengirim file fileName ke objek yang tersambung Socket menggunakan UseDefaultWorkerThread bendera .

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, AsyncCallback ^ callback, System::Object ^ 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);
member this.BeginSendFile : string * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, callback As AsyncCallback, state As Object) As IAsyncResult

Parameter

fileName
String

String yang berisi jalur dan nama file yang akan dikirim. Parameter ini dapat berupa null.

callback
AsyncCallback

Delegasi AsyncCallback .

state
Object

Objek yang berisi informasi status untuk permintaan ini.

Mengembalikan

Objek IAsyncResult yang mewakili pengiriman asinkron.

Pengecualian

Objek Socket telah ditutup.

Soket tidak terhubung ke host jarak jauh.

File fileName tidak ditemukan.

.NET Framework dan .NET 5 dan yang lebih lama saja: Terjadi kesalahan saat mencoba mengakses soket. Lihat bagian keterangan di bawah ini.

Keterangan

Penting

Ini adalah API kompatibilitas. Kami tidak merekomendasikan penggunaan metode APM (Begin* dan End*) untuk pengembangan baru. Sebagai gantinya Task, gunakan setara berbasis.

Kelebihan beban ini mengirimkan file fileName melalui soket. Jika fileName berada di direktori lokal, itu dapat diidentifikasi hanya dengan nama file; jika tidak, jalur lengkap dan nama file harus ditentukan. Kartubebas (".. nama berbagi \\myfile.txt") dan UNC ("\\\shared directory\\myfile.txt") didukung. Jika file tidak ditemukan, pengecualian FileNotFoundException akan dilemparkan.

Anda dapat meneruskan panggilan balik yang diterapkan AsyncCallback untuk BeginSendFile mendapatkan pemberitahuan tentang penyelesaian operasi. Perhatikan bahwa jika tumpukan jaringan yang mendasar menyelesaikan operasi secara sinkron, panggilan balik akan dijalankan sebaris, selama panggilan ke BeginSendFile. Dalam hal ini, CompletedSynchronously properti pada yang dikembalikan IAsyncResult akan diatur ke true untuk menunjukkan bahwa metode selesai secara sinkron. AsyncState Gunakan properti dari IAsyncResult untuk mendapatkan objek status yang diteruskan ke BeginSendFile metode .

Operasi BeginSendFile harus diselesaikan dengan memanggil EndSendFile metode . Biasanya, metode ini dipanggil oleh AsyncCallback delegasi. EndSendFile akan memblokir utas panggilan hingga operasi selesai.

Meskipun ditujukan untuk protokol berorientasi koneksi, BeginSendFile juga berfungsi untuk protokol tanpa koneksi, asalkan Anda terlebih dahulu Connect memanggil metode atau BeginConnect untuk membuat host jarak jauh default. Dengan protokol tanpa koneksi, Anda harus yakin bahwa ukuran file Anda tidak melebihi ukuran paket maksimum penyedia layanan yang mendasar. Jika ya, datagram tidak dikirim dan BeginSendFile memberikan SocketException pengecualian.

Catatan

Jika Anda menerima SocketException pengecualian, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu.

Catatan

Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.

Catatan

Konteks eksekusi (konteks keamanan, pengguna yang ditiru, dan konteks panggilan) di-cache untuk metode asinkron Socket . Setelah penggunaan pertama konteks tertentu (metode asinkron Socket tertentu, instans tertentu Socket , dan panggilan balik tertentu), penggunaan konteks tersebut berikutnya akan melihat peningkatan performa.

Berlaku untuk

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

Sumber:
Socket.cs
Sumber:
Socket.cs
Sumber:
Socket.cs

Mengirim file dan buffer data secara asinkron ke objek yang tersambung Socket .

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult

Parameter

fileName
String

String yang berisi jalur dan nama file yang akan dikirim. Parameter ini dapat berupa null.

preBuffer
Byte[]

Data yang akan dikirim sebelum file dikirim. Parameter ini dapat berupa null.

postBuffer
Byte[]

Data yang akan dikirim setelah file dikirim. Parameter ini dapat berupa null.

flags
TransmitFileOptions

Kombinasi bitwise dari nilai enumerasi.

callback
AsyncCallback

Delegasi AsyncCallback yang akan dipanggil ketika operasi ini selesai. Parameter ini dapat berupa null.

state
Object

Objek yang ditentukan pengguna yang berisi informasi status untuk permintaan ini. Parameter ini dapat berupa null.

Mengembalikan

Objek IAsyncResult yang mewakili operasi asinkron.

Pengecualian

Objek Socket telah ditutup.

.NET Framework dan .NET 5 dan yang lebih lama saja: Terjadi kesalahan saat mencoba mengakses soket. Lihat bagian keterangan di bawah ini.

Sistem operasi bukan Windows NT atau yang lebih baru.

-atau-

Soket tidak terhubung ke host jarak jauh.

File fileName tidak ditemukan.

Keterangan

Penting

Ini adalah API kompatibilitas. Kami tidak merekomendasikan penggunaan metode APM (Begin* dan End*) untuk pengembangan baru. Sebagai gantinya Task, gunakan setara berbasis.

Kelebihan beban ini memerlukan nama file yang ingin Anda kirim dan kombinasi TransmitFileOptions nilai bitwise. Parameter preBuffer berisi data apa pun yang ingin Anda awali file. postBuffer berisi data yang ingin Anda ikuti filenya. Jika fileName berada di direktori lokal, itu dapat diidentifikasi hanya dengan nama file; jika tidak, jalur lengkap dan nama file harus ditentukan. Kartubebas (".. nama berbagi \\myfile.txt") dan UNC ("\\\shared directory\\myfile.txt") didukung. Jika file tidak ditemukan, pengecualian FileNotFoundException akan dilemparkan.

Parameter flags menyediakan informasi tambahan tentang transfer file. Untuk informasi selengkapnya tentang cara menggunakan parameter ini, lihat TransmitFileOptions.

Anda dapat meneruskan panggilan balik yang diterapkan AsyncCallback untuk BeginSendFile mendapatkan pemberitahuan tentang penyelesaian operasi. Perhatikan bahwa jika tumpukan jaringan yang mendasar menyelesaikan operasi secara sinkron, panggilan balik akan dijalankan sebaris, selama panggilan ke BeginSendFile. Dalam hal ini, CompletedSynchronously properti pada yang dikembalikan IAsyncResult akan diatur ke true untuk menunjukkan bahwa metode selesai secara sinkron. AsyncState Gunakan properti dari IAsyncResult untuk mendapatkan objek status yang diteruskan ke BeginSendFile metode .

Operasi BeginSendFile harus diselesaikan dengan memanggil EndSendFile metode . Biasanya, metode ini dipanggil oleh delegasi yang disediakan AsyncCallback . EndSendFile akan memblokir utas panggilan hingga operasi selesai.

Meskipun ditujukan untuk protokol berorientasi koneksi, BeginSendFile juga berfungsi untuk protokol tanpa koneksi, asalkan Anda terlebih dahulu Connect memanggil metode atau BeginConnect untuk membuat host jarak jauh default. Dengan protokol tanpa koneksi, Anda harus yakin bahwa ukuran file Anda tidak melebihi ukuran paket maksimum penyedia layanan yang mendasar. Jika ya, datagram tidak dikirim dan BeginSendFile memberikan SocketException pengecualian.

Catatan

Jika Anda menerima SocketException pengecualian, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu.

Catatan

Anggota ini mengeluarkan informasi pelacakan saat Anda mengaktifkan pelacakan jaringan di aplikasi Anda. Untuk informasi selengkapnya, lihat Pelacakan Jaringan di .NET Framework.

Catatan

Konteks eksekusi (konteks keamanan, pengguna yang ditiru, dan konteks panggilan) di-cache untuk metode asinkron Socket . Setelah penggunaan pertama konteks tertentu (metode asinkron Socket tertentu, instans tertentu Socket , dan panggilan balik tertentu), penggunaan konteks tersebut berikutnya akan melihat peningkatan performa.

Berlaku untuk