Socket.BeginReceiveFrom 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.
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
- 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
.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.
Sudah Socket ditutup.
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 buffer
ukuran , 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.