Belajar Winsock bagian 3 – Multiple Connection
Di postingan saya sebelumnya kita sudah mengetahui bagai mana cara membuat aplikasi chat sederhana yang hanya melibatkan saya dan Anda , dan bagai mana jika ada teman saya yang lain ikut nimbrung ?
Jelas ini tidak bisa karena 1 winsock hanya bisa menangani 1 port, trus bagaimana jika kita ingin teman kita yang lain bisa konek di port yang sama dan hanya menggunakan 1 winsock? Jawabannya sederhana objek winsocknya kita jadikan array.
Oke, masukkan objek winsock ke form kemudian untuk menjadikannya sebagai objek array kita cukup mengset properties Index=0, jadi winsock dengan index 0 bertugas untuk mengecek permintaan koneksi masuk dan mengalokasikannya kepada yang berhak :) dan tentu saja untuk melakukan hal ini harus dalam mode mendengarkan/Listen
Ketika ada permintaan koneksi di port 11111, kita harus menambahkan objek winsock baru untuk menerima permintaan koneksi tersebut dan karena objek winsock yang baru tidak kita set properties LocalPortnya otomatis windows yang akan memberikan nilai Port secara acak.
Fungsi UBound
digunakan untuk mendapatkan nilai index terakhir dari objek array, jadi untuk mengetahui berapa jumlah objek arraynya kita cukup memanggil fungsi UBound
+ 1.
Solusi menggunakan winsock array diatas masih mempunyai sedikit masalah, misalkan kita sudah mempunyai 5 koneksi di port 11111 ini artinya kita sudah mempunyai 6 objek winsock yang aktif, index 0 dalam mode mendengarkan/Listen, dan 1 sampai 5 konek ke klien.
Apa yang terjadi jika 3 klien tidak terkoneksi lagi? Sebenarnya sih enggak terlalu bermasalah, masalahnya adalah jika ada klien lain yang konek ke server otomatis objek winsock baru ditambahkan lagi untuk menerima koneksi yang baru, padahal ada 3 objek winsock yang sedang nganggur/idle.
Bayangkan jika kita diminta untuk membuat aplikasi billing warnet dengan 100 klien, ada 50 klien yang sudah disconnect kemudian ada 50 klien lagi yang baru konek. Ini artinya kita mempunyai 50 objek winsock nganggur/idle yang jelas-jelas merupakan pemborosan memory dan bagai mana jika hal tersebut terulang lagi, lagi dan lagi.
Bagaimana solusinya? Yaph sebenarnya ini juga gampang, jadi jika ada permintaan koneksi dari klien kita cek dulu ada nggak objek winsock yang idle, kalo ada arahkan agar winsock yang idle tadi untuk menerima koneksi tersebut, jika tidak ada baru kita tambahkan objek winsock yang baru untuk menerima koneksi tersebut sehingga kode sebelumnya harus kita revisi menjadi :
Yaph cukup itu saja, contoh programnya bisa didownload disini.
Artikel berikutnya insya Alloh dengan judul Belajar Winsock bagian 4 – Membuat jaringan VPN sendiri.
Di artikel tersebut saya sudah tidak membahas penggunaan winsock lagi tetapi artikel tersebut dibutuhkan agar saya bisa menulis artikel terakhir dari 5 seri belajar Winsock ini yang berjudul Belajar Winsock bagian akhir – Contoh kasus mengakses data stok barang dari luar.
Dan tentunya ini bukan via web (kalo yang ini sudah enggak perlu dibahas lagi) tetapi tetap dengan mengembangkan contoh-contoh program winsock sebelumnya, dan sebagai uji coba untuk komputer server toko yang akan diakses menggunakan speedy sedangkan saya menggunakan starone dan mudah-mudahan saja uji coba ini berhasil .
Selamat mencoba
Comments