Bagikan melalui


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 ini menjelaskan langkah-langkah yang tersisa untuk membuat aplikasi server Winsock.

Kode sumber lengkap untuk contoh dasar ini.

Sampel Aplikasi Winsock Tingkat Lanjut

Beberapa aplikasi sampel server dan klien Winsock yang lebih canggih tersedia di GitHub. Mereka tercantum di sini dalam urutan dari performa yang lebih tinggi ke yang 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 fungsiWSAAccept; server Winsock, iocpserverex, yang menggunakan fungsiAcceptEx; 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 sembarang yang kemudian dikembalikan ke klien. Untuk kemudahan, program klien sederhana, iocpclient, dikembangkan untuk menyambungkan dan secara terus-menerus mengirimkan data ke server guna menguji beban menggunakan banyak thread. 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 fungsiAcceptEx dan I/O yang tumpang tindih untuk menangani beberapa permintaan koneksi asinkron secara efektif dari klien. Server menggunakan fungsi AcceptEx ke multipleks koneksi klien yang berbeda dalam aplikasi Win32 berulir tunggal. Menggunakan I/O yang tumpang tindih memungkinkan skalabilitas yang lebih besar.

  • WSAPoll

    Folder ini berisi program sampel dasar yang menunjukkan penggunaan fungsiWSAPoll. Klien gabungan dan program server 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 utas ganda oleh server. Program ini meliputi: server TCP/UDP sederhana, simples; server khusus TCP, simples_ioctl, yang menggunakan fungsi pilih di aplikasi konsol Win32 untuk mendukung beberapa permintaan klien; dan program TCP/UDP klien, simplec, untuk menguji server. Server menunjukkan penggunaan beberapa utas untuk menangani berbagai permintaan dari banyak klien. Metode tersebut memiliki masalah skalabilitas karena utas terpisah dibuat untuk setiap permintaan klien.

  • terima

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