Windows Sockets: Stream Sockets
Artikel ini menjelaskan soket aliran, salah satu dari dua jenis Windows Socket yang tersedia. (Jenis lainnya adalah soket datagram.)
Soket streaming menyediakan aliran data tanpa batas rekaman: aliran byte yang dapat dua arah (aplikasinya adalah dupleks penuh: dapat mengirimkan dan menerima melalui soket). Aliran dapat diandalkan untuk mengirimkan data yang berurutan dan tidak diurungkan. ("Berurutan" berarti bahwa paket dikirimkan dalam urutan yang dikirim. "Tidak Terganggu" berarti Anda mendapatkan paket tertentu hanya sekali.) Penerimaan pesan aliran dijamin, dan aliran sangat cocok untuk menangani data dalam jumlah besar.
Lapisan transportasi jaringan dapat memecah atau mengelompokkan data menjadi paket dengan ukuran yang wajar. Kelas CSocket
akan menangani pengepakan dan membongkah kemasan untuk Anda.
Aliran didasarkan pada koneksi eksplisit: soket A meminta koneksi ke soket B; soket B menerima atau menolak permintaan koneksi.
Panggilan telepon menyediakan analogi yang baik untuk aliran. Dalam keadaan normal, pihak penerima mendengar apa yang Anda katakan dalam urutan yang Anda katakan, tanpa duplikasi atau kehilangan. Soket streaming sesuai, misalnya, untuk implementasi seperti Protokol Transfer File (FTP), yang memfasilitasi transfer ASCII atau file biner dengan ukuran arbitrer.
Soket aliran lebih disukai daripada soket datagram ketika data harus dijamin tiba dan ketika ukuran data besar. Untuk informasi selengkapnya tentang soket streaming, lihat spesifikasi Soket Windows. Spesifikasi tersedia di Windows SDK.
Menggunakan soket aliran dapat lebih unggul dari aplikasi yang dirancang untuk menggunakan soket datagram untuk menyiarkan ke semua soket penerimaan di jaringan karena
Model siaran tunduk pada masalah banjir jaringan (atau "badai").
Model server klien yang diadopsi kemudian lebih efisien.
Model aliran menyediakan transfer data yang andal, di mana model datagram tidak.
Model akhir memanfaatkan kemampuan untuk berkomunikasi antara aplikasi soket Unicode dan ANSI yang dipinjamkan CArchive kelas ke CSocket kelas.
Catatan
Jika Anda menggunakan kelas
CSocket
, Anda harus menggunakan aliran. Pernyataan MFC gagal jika Anda menentukan jenis soket sebagai SOCK_DGRAM.