Mulai menggunakan Winsock

Bagian ini adalah panduan langkah demi langkah untuk memulai pemrograman Windows Sockets. Ini dirancang untuk memberikan pemahaman tentang fungsi dan struktur data Winsock dasar, dan bagaimana mereka bekerja sama.

Aplikasi klien dan server yang kami gunakan dalam topik ini untuk ilustrasi adalah klien dan server yang sangat mendasar. Contoh kode yang lebih canggih disertakan dalam sampel yang disertakan dengan Microsoft Windows Software Development Kit (SDK).

Beberapa langkah pertama sama untuk aplikasi klien dan server.

Artikel berikut menjelaskan langkah-langkah yang tersisa untuk membuat aplikasi klien Winsock.

Artikel berikut menjelaskan langkah-langkah yang tersisa untuk membuat aplikasi server Winsock.

Kode sumber lengkap untuk contoh dasar ini.

Aplikasi sampel Winsock tingkat lanjut

Beberapa aplikasi sampel klien dan server Winsock yang lebih canggih tersedia di GitHub. Mereka tercantum di sini agar dari performa yang lebih tinggi ke lebih rendah, dan ditemukan di direktori berikut:

  • iocp

    Folder tersebut berisi tiga program sampel yang menggunakan port penyelesaian I/O. Program ini meliputi: server Winsock, iocpserver, yang menggunakan fungsi WSAAccept ; server Winsock, , iocpserverexyang menggunakan fungsi AcceptEx ; dan klien Winsock multithreaded sederhana, , iocpclientdigunakan untuk menguji salah satu server ini.

    Program server mendukung beberapa klien yang terhubung dengan menggunakan TCP/IP, dan mengirim buffer data berukuran arbitrer yang kemudian digaungkan server kembali ke klien. Untuk kenyamanan, program klien sederhana, iocpclient, dikembangkan untuk menyambungkan dan terus mengirim data ke server untuk menekankannya menggunakan beberapa utas. Server Winsock yang menggunakan port penyelesaian I/O memberikan performa tertinggi.

  • Tumpang tindih

    Folder ini berisi program server sampel yang menggunakan I/O yang tumpang tindih. Program sampel menggunakan fungsi AcceptEx dan I/O yang tumpang tindih untuk menangani beberapa permintaan koneksi asinkron secara efektif dari klien. Server menggunakan fungsi AcceptEx untuk mengalihkan koneksi klien yang berbeda dalam aplikasi Win32 satu utas. Menggunakan I/O yang tumpang tindih memungkinkan skalabilitas yang lebih besar.

  • WSAPoll

    Folder ini berisi program sampel dasar yang menunjukkan penggunaan fungsi WSAPoll . Program klien dan server gabungan tidak memblokir, dan menggunakan fungsi WSAPoll untuk menentukan kapan mungkin untuk mengirim atau menerima tanpa memblokir. Sampel ini untuk ilustrasi, dan bukan server berkinerja tinggi.

  • Sederhana

    Folder ini berisi tiga program sampel dasar yang menunjukkan penggunaan beberapa utas oleh server. Program ini meliputi: server TCP/UDP sederhana, simples; server khusus TCP, , simples_ioctlyang menggunakan fungsi pilih dalam aplikasi konsol Win32 untuk mendukung beberapa permintaan klien; dan program TCP/UDP klien, , simplecuntuk menguji server. Server menunjukkan penggunaan beberapa utas untuk menangani beberapa permintaan klien. Metode tersebut memiliki masalah skalabilitas karena utas terpisah dibuat untuk setiap permintaan klien.

  • Menerima

    Folder ini berisi server sampel dasar dan program klien. Server menunjukkan penggunaan penerimaan non-pemblokiran menggunakan fungsi pilih , atau penerimaan asinkron menggunakan fungsi WSAAsyncSelect . Sampel ini untuk ilustrasi, dan bukan server berkinerja tinggi.