Bagikan melalui


Menerima Koneksi (Windows Sockets 2)

Setelah soket mendengarkan koneksi, program harus menangani permintaan koneksi pada soket tersebut.

Untuk menerima koneksi pada soket

  1. Buat objek SOCKET sementara yang disebut ClientSocket untuk menerima koneksi dari klien.

    
    SOCKET ClientSocket;
    
    
    
  2. Biasanya aplikasi server akan dirancang untuk mendengarkan koneksi dari beberapa klien. Untuk server berkinerja tinggi, beberapa utas umumnya digunakan untuk menangani beberapa koneksi klien.

    Ada beberapa teknik pemrograman yang berbeda menggunakan Winsock yang dapat digunakan untuk mendengarkan beberapa koneksi klien. Salah satu teknik pemrograman adalah membuat perulangan berkelanjutan yang memeriksa permintaan koneksi menggunakan fungsi dengar (lihat Mendengarkan di Soket). Jika permintaan koneksi terjadi, aplikasi memanggil fungsi accept, AcceptEx, atau WSAAccept dan meneruskan pekerjaan ke utas lain untuk menangani permintaan. Beberapa teknik pemrograman lainnya dimungkinkan.

    Perhatikan bahwa contoh dasar ini sangat sederhana dan tidak menggunakan beberapa utas. Contohnya juga hanya mendengarkan dan hanya menerima satu koneksi.

    
    ClientSocket = INVALID_SOCKET;
    
    // Accept a client socket
    ClientSocket = accept(ListenSocket, NULL, NULL);
    if (ClientSocket == INVALID_SOCKET) {
        printf("accept failed: %d\n", WSAGetLastError());
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }
    
    
    
  3. Ketika koneksi klien telah diterima, aplikasi server biasanya akan meneruskan soket klien yang diterima (variabel ClientSocket dalam kode sampel di atas) ke utas pekerja atau port penyelesaian I/O dan terus menerima koneksi tambahan. Dalam contoh dasar ini, server berlanjut ke langkah berikutnya.

    Ada sejumlah teknik pemrograman lain yang dapat digunakan untuk mendengarkan dan menerima beberapa koneksi. Ini termasuk menggunakan fungsi pilih atau WSAPoll . Contoh beberapa dari berbagai teknik pemrograman ini diilustrasikan dalam Sampel Winsock Tingkat Lanjut yang disertakan dengan Microsoft Windows Software Development Kit (SDK).

    Catatan

    Pada sistem Unix, teknik pemrograman umum untuk server adalah agar aplikasi mendengarkan koneksi. Ketika koneksi diterima, proses induk akan memanggil fungsi fork untuk membuat proses anak baru untuk menangani koneksi klien, mewarisi soket dari induk. Teknik pemrograman ini tidak didukung pada Windows, karena fungsi fork tidak didukung. Teknik ini juga biasanya tidak cocok untuk server berkinerja tinggi, karena sumber daya yang diperlukan untuk membuat proses baru jauh lebih besar daripada yang diperlukan untuk utas.

     

Langkah Berikutnya: Menerima dan Mengirim Data di Server

Memulai Dengan Winsock

Aplikasi Server Winsock

Mendengarkan di Soket