Bagikan melalui


Windows Sockets: Pemberitahuan Soket

Artikel ini menjelaskan fungsi pemberitahuan di kelas soket. Fungsi anggota ini adalah fungsi panggilan balik yang dipanggil kerangka kerja untuk memberi tahu objek soket Anda tentang peristiwa penting. Fungsi pemberitahuan adalah:

  • OnReceive: Memberi tahu soket ini bahwa ada data dalam buffer untuk diambil dengan memanggil Terima.

  • OnSend: Memberi tahu soket ini bahwa soket ini sekarang dapat mengirim data dengan memanggil Kirim.

  • OnAccept: Memberi tahu soket mendengarkan ini bahwa ia dapat menerima permintaan koneksi yang tertunda dengan memanggil Terima.

  • OnConnect: Memberi tahu soket penghubung ini bahwa upaya koneksinya selesai: mungkin berhasil atau mungkin dalam kesalahan.

  • OnClose: Memberi tahu soket ini bahwa soket yang tersambung dengannya telah ditutup.

    Nota

    Fungsi pemberitahuan tambahan adalah OnOutOfBandData. Pemberitahuan ini memberi tahu soket penerima bahwa soket pengiriman memiliki data "di luar band" untuk dikirim. Data di luar band adalah saluran independen logis yang terkait dengan setiap pasangan soket aliran yang terhubung. Saluran di luar band biasanya digunakan untuk mengirim data "mendesak". MFC mendukung data di luar band. Pengguna tingkat lanjut yang bekerja dengan kelas CAsyncSocket mungkin perlu menggunakan saluran out-of-band, tetapi pengguna kelas CSocket tidak dianjurkan untuk menggunakannya. Cara yang lebih mudah adalah dengan membuat soket kedua untuk meneruskan data tersebut. Untuk informasi selengkapnya tentang data di luar band, lihat spesifikasi Windows Sockets, yang tersedia di Windows SDK.

Jika Anda berasal dari kelas CAsyncSocket, Anda harus mengganti fungsi pemberitahuan untuk peristiwa jaringan yang relevan bagi aplikasi Anda. Jika Anda memperoleh kelas dari kelas CSocket, itu adalah pilihan Anda apakah akan mengambil alih fungsi pemberitahuan yang menarik. Anda juga dapat menggunakan CSocket itu sendiri, dalam hal ini fungsi pemberitahuan secara default tidak melakukan apa pun.

Fungsi-fungsi ini adalah fungsi panggilan balik yang bisa di-overrides. CAsyncSocket dan CSocket mengonversi pesan ke pemberitahuan, tetapi Anda harus menerapkan bagaimana fungsi pemberitahuan merespons jika Anda ingin menggunakannya. Fungsi pemberitahuan dipanggil pada saat soket Anda diberi tahu tentang peristiwa yang menarik, seperti adanya data yang akan dibaca.

MFC memanggil fungsi pemberitahuan untuk memungkinkan Anda menyesuaikan perilaku soket Anda ketika diberi notifikasi. Misalnya, Anda mungkin memanggil Receive dari fungsi pemberitahuan Anda OnReceive , yaitu, pada diberi tahu bahwa ada data yang akan dibaca, Anda memanggil Receive untuk membacanya. Pendekatan ini tidak diperlukan, tetapi ini adalah skenario yang valid. Sebagai alternatif, Anda dapat menggunakan fungsi pemberitahuan untuk melacak kemajuan, mencetak pesan TRACE , dan sebagainya.

Anda dapat memanfaatkan pemberitahuan ini dengan mengambil alih fungsi pemberitahuan di kelas soket turunan dan memberikan implementasi.

Selama operasi seperti menerima atau mengirim data, objek CSocket menjadi sinkron. Selama status sinkron, pemberitahuan apa pun yang dimaksudkan untuk soket lain diantrekan saat soket saat ini menunggu pemberitahuan yang diinginkan. (Misalnya, selama Receive panggilan, soket ingin pemberitahuan dibaca.) Setelah soket menyelesaikan operasi sinkronnya dan menjadi asinkron lagi, soket lain dapat mulai menerima pemberitahuan yang diantrekan.

Nota

Dalam CSocket, OnConnect fungsi pemberitahuan tidak pernah dipanggil. Untuk koneksi, Anda memanggil Connect, yang akan kembali ketika koneksi selesai (berhasil atau dalam kesalahan). Bagaimana pemberitahuan koneksi ditangani adalah detail implementasi MFC.

Untuk detail tentang setiap fungsi pemberitahuan, lihat fungsi di bawah kelas CAsyncSocket di Referensi MFC. Untuk kode sumber dan informasi tentang sampel MFC, lihat Sampel MFC.

Untuk informasi selengkapnya, lihat:

Lihat juga

Windows Sockets pada MFC