Bagikan melalui


Socket.SendPacketsAsync(SocketAsyncEventArgs) Metode

Definisi

Mengirim kumpulan file atau dalam buffer data memori secara asinkron ke objek yang tersambung Socket .

public:
 bool SendPacketsAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendPacketsAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendPacketsAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendPacketsAsync (e As SocketAsyncEventArgs) As Boolean

Parameter

e
SocketAsyncEventArgs

Objek SocketAsyncEventArgs yang digunakan untuk operasi soket asinkron ini.

Mengembalikan

true jika operasi I/O tertunda. Peristiwa Completed pada e parameter akan dinaikkan setelah menyelesaikan operasi.

false jika operasi I/O selesai secara sinkron. Dalam hal ini, Peristiwa Completed pada e parameter tidak akan dinaikkan dan e objek yang diteruskan sebagai parameter dapat diperiksa segera setelah panggilan metode kembali untuk mengambil hasil operasi.

Pengecualian

File yang ditentukan dalam FilePath properti tidak ditemukan.

Operasi soket sudah berlangsung menggunakan SocketAsyncEventArgs objek yang ditentukan dalam e parameter .

Socket tidak tersambung ke host jarak jauh.

Koneksi sedang Socket digunakan dan file yang dikirim melebihi ukuran paket maksimum dari transportasi yang mendasar.

Keterangan

Metode SendPacketsAsync ini digunakan untuk mengirim kumpulan file atau dalam buffer data memori ke host jarak jauh. Socket harus sudah tersambung ke host jarak jauh.

Jika mereferensikan System.Net.Sockets.SendPacketsElement file di direktori kerja, file tersebut dapat diidentifikasi hanya dengan nama file; jika tidak, jalur lengkap dan nama file harus ditentukan. Wildcard dan nama berbagi UNC didukung. Jika file tidak ditemukan, FileNotFoundException akan dilemparkan.

Untuk diberi tahu tentang penyelesaian, Anda harus membuat metode panggilan balik yang mengimplementasikan delegasi EventHandler<SocketAsyncEventArgs> dan melampirkan panggilan balik ke SocketAsyncEventArgs.Completed acara.

Properti SocketAsyncEventArgs.SendPacketsFlags pada e parameter menyediakan penyedia layanan Window Sockets dengan informasi tambahan tentang transfer file. Untuk informasi selengkapnya tentang cara menggunakan parameter ini, lihat TransmitFileOptions.

Properti dan peristiwa berikut pada System.Net.Sockets.SocketAsyncEventArgs objek diperlukan agar berhasil memanggil metode ini:

Pemanggil dapat mengatur SocketAsyncEventArgs.UserToken properti ke objek status pengguna apa pun yang diinginkan sebelum memanggil SendPacketsAsync metode , sehingga informasi akan dapat diambil dalam metode panggilan balik. Jika panggilan balik membutuhkan lebih banyak informasi daripada satu objek, kelas kecil dapat dibuat untuk menyimpan informasi status lain yang diperlukan sebagai anggota.

Metode ini menggunakan fungsi TransmitPackets yang ditemukan di WINDOWS Sockets 2 API. Untuk informasi selengkapnya tentang fungsi TransmitPackets dan benderanya, lihat dokumentasi Windows Sockets .

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

Metode SendPacketsAsync ini dioptimalkan sesuai dengan sistem operasi tempat metode tersebut digunakan. Pada edisi server Windows, metode ini dioptimalkan SendPacketsAsync untuk performa tinggi.

Pada edisi klien Windows, metode ini dioptimalkan SendPacketsAsync untuk memori minimum dan pemanfaatan sumber daya.

Penggunaan TransmitFileOptions.UseKernelApc bendera dalam SocketAsyncEventArgs.SendPacketsFlags properti pada e parameter dapat memberikan manfaat performa yang signifikan. Jika utas yang memulai SendPacketsAsync panggilan metode sedang digunakan untuk komputasi berat, mungkin saja, meskipun tidak mungkin, APC tersebut dapat dicegah untuk diluncurkan. Perhatikan bahwa ada perbedaan antara APC kernel dan mode pengguna. APC Kernel diluncurkan saat utas dalam status tunggu. APC mode pengguna diluncurkan saat utas dalam status tunggu yang dapat diperingatkan

Berlaku untuk

Lihat juga