Bagikan melalui


Socket.BeginReceiveFrom Metode

Definisi

Mulai menerima data secara asinkron dari perangkat jaringan tertentu.

public:
 IAsyncResult ^ BeginReceiveFrom(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 BeginReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

Parameter

buffer
Byte[]

Array jenis Byte yang merupakan lokasi penyimpanan untuk data yang diterima.

offset
Int32

Posisi berbasis nol dalam buffer parameter untuk menyimpan data.

size
Int32

Jumlah byte yang akan diterima.

socketFlags
SocketFlags

Kombinasi bitwise dari SocketFlags nilai.

remoteEP
EndPoint

Referensi ke jenis yang EndPoint sama dengan titik akhir host jarak jauh yang akan diperbarui pada penerimaan sinkron.

callback
AsyncCallback

Delegasi AsyncCallback .

state
Object

Objek yang berisi informasi status untuk permintaan ini.

Mengembalikan

Yang IAsyncResult mereferensikan pembacaan 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 dalam 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 AsyncCallbackBeginReceiveFrom untuk mendapatkan pemberitahuan tentang penyelesaian operasi. Perhatikan bahwa jika tumpukan jaringan yang mendasar menyelesaikan operasi secara sinkron, panggilan balik akan dijalankan sebaris, selama panggilan ke BeginReceiveFrom. Dalam hal ini, CompletedSynchronously properti pada yang dikembalikan IAsyncResult akan diatur ke true untuk menunjukkan bahwa metode selesai secara sinkron. AsyncState Gunakan properti untuk IAsyncResult mendapatkan objek status yang diteruskan ke BeginReceiveFrom metode .

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

Metode ini membaca data ke buffer dalam parameter, dan menangkap titik akhir host jarak jauh tempat data dikirim. Untuk informasi tentang cara mengambil titik akhir ini, lihat EndReceiveFrom. Metode ini paling berguna jika Anda berniat menerima datagram tanpa koneksi secara asinkron dari host yang tidak diketahui atau beberapa host. Dalam kasus ini, BeginReceiveFrom akan membaca datagram antrean pertama yang diterima ke dalam buffer jaringan lokal. Jika datagram yang Anda terima lebih besar dari bufferukuran , BeginReceiveFrom metode akan diisi buffer dengan pesan sebanyak mungkin, dan melemparkan SocketException. Jika Anda menggunakan protokol yang tidak dapat diandalkan, data berlebih akan hilang. Jika Anda menggunakan protokol yang dapat diandalkan, data berlebih akan disimpan oleh penyedia layanan dan Anda dapat mengambilnya dengan memanggil BeginReceiveFrom metode dengan buffer yang cukup besar.

Untuk menjamin bahwa titik akhir host jarak jauh selalu dikembalikan, aplikasi harus secara eksplisit mengikat Socket ke titik akhir lokal menggunakan Bind metode dan kemudian memanggil SetSocketOption metode dengan optionLevel parameter yang diatur ke IP atau IPv6 sebagaimana mestinya, optionName parameter diatur ke PacketInformation, dan optionValue parameter untuk mengaktifkan opsi ini sebelum memanggil BeginReceiveFrom metode . Jika tidak, dimungkinkan bagi titik akhir host jarak jauh untuk tidak dikembalikan ketika pengirim telah mengirim sejumlah datagram sebelum penerima memanggil BeginReceiveFrom metode .

Meskipun BeginReceiveFrom ditujukan untuk protokol tanpa koneksi, Anda juga dapat menggunakan protokol berorientasi koneksi. Jika Anda memilih untuk melakukannya, Anda harus terlebih dahulu membuat koneksi host jarak jauh dengan memanggil Connect / BeginConnect metode atau menerima permintaan koneksi masuk dengan memanggil Accept metode atau .BeginAccept Jika Anda memanggil BeginReceiveFrom metode sebelum membuat atau menerima koneksi, Anda akan mendapatkan SocketException. Anda juga dapat membuat host jarak jauh default untuk protokol tanpa koneksi sebelum memanggil BeginReceiveFrom metode .

Parameter remoteEp

Dengan soket berorientasi koneksi, BeginReceiveFrom akan membaca data sebanyak yang tersedia hingga jumlah byte yang ditentukan oleh size parameter .

Untuk membatalkan yang tertunda BeginReceiveFrom, panggil Close metode .

Catatan

Jika Anda menerima SocketException, 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

Lihat juga