Bagikan melalui


Socket.BeginSendTo Metode

Definisi

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

buffer
Byte[]

Array jenis Byte yang berisi data yang akan dikirim.

offset
Int32

Posisi berbasis nol untuk buffer mulai mengirim data.

size
Int32

Jumlah byte yang akan dikirim.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

Yang EndPoint mewakili perangkat jarak jauh.

callback
AsyncCallback

Delegasi AsyncCallback .

state
Object

Objek yang berisi informasi status untuk permintaan ini.

Mengembalikan

Yang IAsyncResult mereferensikan pengiriman asinkron.

Pengecualian

bufferadalah null.

-atau-

remoteEPadalah null.

.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.

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.

Berlaku untuk

Lihat juga