Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Windows Sockets: Menggunakan Kelas
Artikel ini menjelaskan cara menggunakan kelas CAsyncSocket. Kelas ini merangkum WINDOWS Sockets API pada tingkat yang sangat rendah.
CAsyncSocket adalah untuk digunakan oleh programmer yang mengetahui komunikasi jaringan secara rinci tetapi menginginkan kenyamanan panggilan balik untuk pemberitahuan peristiwa jaringan. Berdasarkan asumsi ini, artikel ini hanya menyediakan instruksi dasar. Anda mungkin harus mempertimbangkan untuk menggunakan CAsyncSocket jika Anda ingin kemudahan Windows Sockets menangani beberapa protokol jaringan dalam aplikasi MFC tetapi tidak ingin mengorbankan fleksibilitas. Anda mungkin juga merasa bahwa Anda bisa mendapatkan efisiensi yang lebih baik dengan memrogram komunikasi lebih langsung daripada jika Anda menggunakan model alternatif kelas CSocket yang lebih umum.
CAsyncSocket didokumenkan dalam Referensi MFC. Visual C++ juga menyediakan spesifikasi Windows Sockets, yang terletak di Windows SDK. Detailnya diserahkan padamu. Visual C++ tidak menyediakan aplikasi sampel untuk CAsyncSocket.
Jika Anda tidak sangat berpengetahuan tentang komunikasi jaringan dan menginginkan solusi sederhana, gunakan kelas CSocket dengan CArchive objek. Lihat Soket Windows: Menggunakan Soket dengan Arsip untuk informasi lebih lanjut.
Artikel ini membahas:
Membuat dan menggunakan
CAsyncSocketobjek.
Membuat dan menggunakan CAsyncSocket
Untuk menggunakan CAsyncSocket
Buat objek
CAsyncSocketdan gunakan objek tersebut untuk membuat handel dasarSOCKET.Pembuatan soket mengikuti pola konstruksi dua tahap MFC.
Contohnya:
CAsyncSocket sock; sock.Create(); // Use the default parameters-atau-
CAsyncSocket *pSocket = new CAsyncSocket; int nPort = 27; pSocket->Create(nPort, SOCK_DGRAM);Konstruktor pertama di atas membuat
CAsyncSocketobjek pada tumpukan. Konstruktor kedua membuatCAsyncSocketpada tumpukan. Panggilan pertamaCreatedi atas menggunakan parameter default untuk membuat soket aliran. Panggilan keduaCreatemembuat soket datagram dengan port dan alamat tertentu. (Anda dapat menggunakan salah satuCreateversi dengan salah satu metode konstruksi.)Parameter ke
Createadalah:"Port": bilangan bulat pendek.
Untuk soket server, Anda harus menentukan port. Untuk soket klien, Anda biasanya menerima nilai default untuk parameter ini, yang memungkinkan Windows Sockets memilih port.
Jenis soket:
SOCK_STREAM(default) atauSOCK_DGRAM.Soket alamat seperti
"ftp.microsoft.com"atau"128.56.22.8".Ini adalah alamat Protokol Internet (IP) Anda pada jaringan. Anda mungkin akan selalu mengandalkan nilai default untuk parameter ini.
Istilah "port" dan "alamat soket" dijelaskan dalam Soket Windows: Port dan Alamat Soket.
Jika soket adalah klien, sambungkan objek soket ke soket server, menggunakan
CAsyncSocket::Connect.-atau-
Jika soket adalah server, atur agar soket mulai mendengarkan (dengan
CAsyncSocket::Listen) untuk upaya koneksi dari klien. Setelah menerima permintaan koneksi, terima denganCAsyncSocket::Accept.Setelah menerima koneksi, Anda dapat melakukan tugas seperti memvalidasi kata sandi.
Nota
Fungsi
Acceptanggota mengambil referensi ke objek kosongCSocketbaru sebagai parameternya. Anda harus membuat objek ini sebelum memanggilAccept. Jika objek soket ini keluar dari cakupan, koneksi akan ditutup. Jangan panggilCreateobjek soket baru ini. Misalnya, lihat artikel Windows Sockets: Urutan Operasi.Lakukan komunikasi dengan soket lain dengan memanggil anggota fungsi objek
CAsyncSocketyang membungkus fungsi Windows Sockets API.Lihat spesifikasi dan kelas
CAsyncSocketSoket Windows di Referensi MFC.Hancurkan objek
CAsyncSocket.Jika Anda membuat objek soket pada tumpukan, destruktornya akan dipanggil ketika fungsi yang bersangkutan keluar dari ruang lingkup. Jika Anda membuat objek soket di heap, menggunakan
newoperator, Anda bertanggung jawab untuk menggunakandeleteoperator untuk menghapus objek.Destruktor memanggil fungsi anggota objek
Closesebelum menghancurkan objek.
Untuk contoh urutan ini dalam kode (sebenarnya untuk CSocket objek), lihat Windows Sockets: Urutan Operasi.
Tanggung jawab Anda dengan CAsyncSocket
Saat Anda membuat objek kelas CAsyncSocket, objek merangkum handel Windows SOCKET dan menyediakan operasi pada handel tersebut. Saat menggunakan CAsyncSocket, Anda harus menangani semua masalah yang mungkin Anda hadapi jika menggunakan API secara langsung. Contohnya:
Skenario "Memblokir".
Perbedaan urutan byte antara mesin pengiriman dan penerimaan.
Mengonversi antara untai (karakter) Unicode dan multibyte character set (MBCS).
Untuk definisi istilah dan informasi tambahan ini, lihat Windows Sockets: Blocking, Windows Sockets: Byte Ordering, Windows Sockets: Converting Strings.
Terlepas dari masalah ini, kelas CAsyncSocket mungkin menjadi pilihan yang tepat untuk Anda jika aplikasi Anda memerlukan semua fleksibilitas dan kontrol yang bisa Anda dapatkan. Jika tidak, pertimbangkan untuk menggunakan kelas CSocket sebagai gantinya.
CSocket menyembunyikan banyak detail dari Anda: ia memompa pesan Windows selama memblokir panggilan dan memberi Anda akses ke CArchive, yang mengelola perbedaan urutan byte dan konversi string untuk Anda.
Untuk informasi selengkapnya, lihat: