Haii gaes admin muncul lagi niih. Udah kangen postingan admin ya? Emang selalu ditunggu-tunggu admin tuh wkwk. Okayy kali ini admin mau bahas tentang SOCKET PROGRAMMING. Ada yang udah tau ga nih? Kalo udah tau, tetep baca yaaa, jangan lupa kasih saran juga di kolom comment:))
Jadii, socket itu sebuah cara buat berkomunikasi dengan program atau node lain menggunakan file deskriptor. Gaya pemrograman socket berawal dari sistem Unix BSD yang terkenal di bidang penanganan jaringan, sehingga terkenal dengan sebutan BSD Socket. Socket pertama kali muncul pada sistem Unix BSD versi 4.2 sebagai kelanjutan dari implementasi protokol TCP/IP yang muncul pada sistem Unix BSD versi 4.1. Hampir keseluruhan varian Unix dan Linux selalu mengadopsi BSD Socket, dikarenakan komunikasi program dapat berlangsung lewat penggunaan deskriptor file standar Unix dengan bantuan socket.
Keunggulan dari penggunaan socket yaitu dapat melakukan komunikasi antar proses maupun program melalui jaringan yang berbasis TCP/IP, bahkan socket juga dapat berkomunikasi dengan program lain yang berjalan pada platform yang berbeda, asalkan masih dalam protokol transfer yang sama. Hal tersebut dikarenakan socket merupakan fasilitas IPC (Inter Proses Communication) untuk aplikasi jaringan, dimana socket dapat berkomunikasi dengan socket lain, maka diperlukan alamt unik sebagai identifikasi. Alamat unik terdiri atas alamat IP dan nomor Port. Pada dasarnya, komunikasi socket diciptakan untuk menjembatani komunikasi antara dua program pada mesin yang berbeda, namun saat ini socket juga mampu berkomunikasi dengan mesin yang sama. Keunggulan lain dari socket yaitu mampu menangani banyak klien sekaligus (multiple clients).
Ada 2 macam socket yang umum digunakan oleh Unix, antara lain:
- Socket Lokal atau AF_UNIX
Socket lokal adalah socket yang melakukan komunikasi dengan perantaraan sebuah file yang biasanya diletakkan pada direktori /tmp atau /usr/tmp ataupun pada /var/tmp. Socket semacam ini digunakan untuk komunikasi antar aplikasi dalam satu mesin.
- Socket Networking atau AF_INET
Socket networking digunakan untuk komunikasi aplikasi antar mesin dalam lingkungan jaringan TCP/IP. Identifikasi socket dilkukan dengan sebuah identifier berupa nomor port TCP/IP yang disambung oleh client. Socket networking terbagi menjadi 2 macam, antara lain:
- Socket Stream atau SOCK_STREAM : Socket Stream adalah socket komunikasi full-duplex berbasis aliran (stream) data. Pada model komunikasi Socket Stream, koneksi dua aplikasi harus dalam kondisi tersambung dengan benar untuk dapat bertukar data. Koneksi model seperti ini akan menjamin data dapat dipertukarkan dengan baik, namun memiliki kelemahan dalam hal penggunaan jalur data yang relatif besar dan tidak boleh terputus.
- Socket Datagram atau SOCK_DGRAM : Socket Datagram berkomunikasi dengan cara yang berbeda. Socket ini tidak membutuhkan koneksi yang tersambung dengan benar untuk mengirimkan dan menerima data. Model koneksi semacam ini tidak dapat menjamin data dapat dipertukarkan dengan baik, namun memiliki keunggulan dalam hal penggunaan jalur data yang minimal.
Untuk membuat
aplikasi socket yang sederhana diperlukan dua aplikasi. Pertama adalah
aplikasi server yang akan menerima data, sedangkan aplikasi kedua adalah
aplikasi client yang mengirimkan data pada server. Baik aplikasi server dan
aplikasi client mendefinisikan port
yang sama sebagai jalur komunikasi. Obyek
socket pada sisi client dan server berbeda sedikit. Pada sisi aplikasi server,
suatu socket server dibentuk dan melakukan operasi listen/menunggu. Operasi ini
pada intinya menunggu permintaan koneksi dari sisi client. Sedangkan pada sisi
client, dibentuk suatu socket biasa.
Pada
saat socket client, informasi alamat socket server dilewatkan sebagai argumen dan socket client akan otomatis mencoba meminta koneksi ke socket
server. Pada saat permintaan koneksi client sampai pada server, maka server
akan membuat suatu socket biasa. Socket ini yang nantinya akan berkomunikasi
dengan socket pada sisi client. Setelah itu socket
server dapat kembali melakukan listen untuk menunggu permintaan koneksi
dari client lainnya. Langkah ini umumnya hanya dilakukan jika aplikasi server
mengimplementasikan multithreading. Setelah
tercipta koneksi antara client dan server, maka keduanya dapat saling
bertukar pesan. Salah satu atau keduanya kemudian dapat mengakhiri komunikasi
dengan menutup socket.
Untuk
protokol UDP, perbedaanya adalah socket di sisi server sama dengan socket di
sisi client, dan tidak ada operasi listen pada sisi server. Kemudian saat paket
data dikirimkan, alamat socket penerima harus disertakan sebagai argumen.
Sumber materi :