Bagikan melalui


Windows Sockets: Menggunakan Kelas CAsyncSocket

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 CAsyncSocket

Untuk menggunakan CAsyncSocket

  1. Buat objek CAsyncSocket dan gunakan objek tersebut untuk membuat handel dasar SOCKET.

    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 CAsyncSocket objek pada tumpukan. Konstruktor kedua membuat CAsyncSocket pada tumpukan. Panggilan pertama Create di atas menggunakan parameter default untuk membuat soket aliran. Panggilan kedua Create membuat soket datagram dengan port dan alamat tertentu. (Anda dapat menggunakan salah satu Create versi dengan salah satu metode konstruksi.)

    Parameter ke Create adalah:

    • "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) atau SOCK_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.

  2. 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 dengan CAsyncSocket::Accept.

    Setelah menerima koneksi, Anda dapat melakukan tugas seperti memvalidasi kata sandi.

    Nota

    Fungsi Accept anggota mengambil referensi ke objek kosong CSocket baru sebagai parameternya. Anda harus membuat objek ini sebelum memanggil Accept. Jika objek soket ini keluar dari cakupan, koneksi akan ditutup. Jangan panggil Create objek soket baru ini. Misalnya, lihat artikel Windows Sockets: Urutan Operasi.

  3. Lakukan komunikasi dengan soket lain dengan memanggil anggota fungsi objek CAsyncSocket yang membungkus fungsi Windows Sockets API.

    Lihat spesifikasi dan kelas CAsyncSocket Soket Windows di Referensi MFC.

  4. 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 new operator, Anda bertanggung jawab untuk menggunakan delete operator untuk menghapus objek.

    Destruktor memanggil fungsi anggota objek Close sebelum 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:

Lihat juga

Windows Sockets pada MFC