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.
- Membuat soket untuk klien
- Menyambungkan ke soket
- Mengirim dan menerima data pada klien
- Memutuskan sambungan klien
Artikel berikut menjelaskan langkah-langkah yang tersisa untuk membuat aplikasi server Winsock.
- Membuat soket untuk server
- Mengikat soket
- Mendengarkan di soket
- Menerima koneksi
- Menerima dan mengirim data di server
- Memutuskan sambungan server
Kode sumber lengkap untuk contoh dasar ini.
- Menjalankan sampel kode klien dan server Winsock
- Lengkapi kode klien Winsock
- Lengkapi kode server Winsock
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, ,iocpserverex
yang menggunakan fungsi AcceptEx ; dan klien Winsock multithreaded sederhana, ,iocpclient
digunakan 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_ioctl
yang menggunakan fungsi pilih dalam aplikasi konsol Win32 untuk mendukung beberapa permintaan klien; dan program TCP/UDP klien, ,simplec
untuk 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.