Socket.BeginSendTo Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengirim data secara asinkron ke host jarak jauh tertentu.
public:
IAsyncResult ^ BeginSendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- offset
- Int32
Posisi berbasis nol untuk buffer
mulai mengirim data.
- size
- Int32
Jumlah byte yang akan dikirim.
- socketFlags
- SocketFlags
Kombinasi bitwise dari SocketFlags nilai.
- callback
- AsyncCallback
Delegasi AsyncCallback .
- state
- Object
Objek yang berisi informasi status untuk permintaan ini.
Mengembalikan
Yang IAsyncResult mereferensikan pengiriman asinkron.
Pengecualian
.NET Framework dan .NET 5 dan yang lebih lama saja: Terjadi kesalahan saat mencoba mengakses soket.
offset
kurang dari 0.
-atau-
offset
lebih besar dari panjang buffer
.
-atau-
size
kurang dari 0.
-atau-
size
lebih besar dari panjang buffer
dikurangi nilai offset
parameter.
Socket Telah ditutup.
Penelepon yang lebih tinggi di tumpukan panggilan tidak memiliki izin untuk operasi yang diminta.
Keterangan
Penting
Ini adalah API kompatibilitas. Kami tidak merekomendasikan penggunaan metode APM (Begin*
dan End*
) untuk pengembangan baru. Sebagai gantinya Task
, gunakan setara berbasis.
Anda dapat meneruskan panggilan balik yang diterapkan AsyncCallback untuk BeginSendTo mendapatkan pemberitahuan tentang penyelesaian operasi. Perhatikan bahwa jika tumpukan jaringan yang mendasar menyelesaikan operasi secara sinkron, panggilan balik akan dijalankan sebaris, selama panggilan ke BeginSendTo. 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 BeginSendTo metode .
Operasi BeginSendTo harus diselesaikan dengan memanggil EndSendTo metode . Biasanya, metode ini dipanggil oleh delegasi yang disediakan AsyncCallback . EndSendTo akan memblokir utas panggilan hingga operasi selesai.
Jika Anda menggunakan protokol berorientasi koneksi, Anda harus terlebih dahulu memanggil Connectmetode , , BeginConnectAccept, atau BeginAccept , atau BeginSendTo akan melempar SocketException.
BeginSendTo akan mengabaikan remoteEP
parameter dan mengirim data ke yang EndPoint ditetapkan dalam Connectmetode , BeginConnect, Accept, atau BeginAccept .
Jika Anda menggunakan protokol tanpa koneksi, Anda tidak perlu membuat host jarak jauh default dengan Connect metode atau BeginConnect sebelum memanggil SendTo. Anda hanya perlu melakukan ini jika Anda berniat untuk memanggil BeginSend metode . Jika Anda memanggil Connect metode atau BeginConnect sebelum memanggil SendTo, remoteEP
parameter akan mengambil alih host jarak jauh default yang ditentukan hanya untuk operasi pengiriman tersebut. Anda juga tidak diharuskan untuk memanggil Bind metode . Dalam hal ini, penyedia layanan yang mendasar akan menetapkan alamat jaringan lokal dan nomor port yang paling tepat. Gunakan nomor port nol jika Anda ingin penyedia layanan yang mendasar memilih port gratis. Jika Anda perlu mengidentifikasi alamat jaringan lokal dan nomor port yang ditetapkan, Anda dapat menggunakan LocalEndPoint properti setelah EndSendTo metode berhasil diselesaikan.
Jika Anda ingin mengirim data ke alamat siaran, Anda harus terlebih dahulu memanggil SetSocketOption metode dan mengatur opsi soket ke SocketOptionName.Broadcast. -Anda juga harus yakin bahwa ukuran buffer Anda tidak melebihi ukuran paket maksimum penyedia layanan yang mendasar. Jika ya, datagram tidak akan dikirim dan EndSendTo akan melempar SocketException.
Jika Anda menentukan DontRoute bendera sebagai socketflags
parameter, data yang Anda kirim tidak akan dirutekan.
Catatan
Jika Anda menerima SocketException, gunakan SocketException.ErrorCode properti untuk mendapatkan kode kesalahan tertentu. Setelah Anda mendapatkan kode ini, lihat dokumentasi kode kesalahan API Windows Sockets versi 2 untuk deskripsi terperinci tentang kesalahan tersebut.
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.