Girin Digdo
Blog Universitas Komputer Indonesia
Featured Blog
Featured

Berkenalan dengan Socket Programming

Berkenalan dengan Socket Programming
Dalam tulisan ini, kita akan sedikit membahas mengenai socket programming. Apa itu socket programming? Baru denger? Hehe mari kita berkenalan :)
 

Intro

Socket programming merupakan pemrograman yang bertujuan agar satu program bisa berinteraksi dengan program lainnya dalam satu jaringan, biasa disebut juga dengan pemrograman jaringan.
Socket dapat berupa :
 
- Connection based or connectionless
   Koneksi yang didirikan sebelum berkomunikasi atau sebelum paket menentukan lokasi tujuan.
- Packet based or streams based
- Reliable or unreliable
   Pesan/paket bisa hilang, terjadi duplikasi, atau bahkan rusak.
 
 

Karakteristik

Socket dapat dikenali melalui domainnya masing-maisng, bentuk dan transport protokol. Pada umumnya, domain pada socket yaitu :
- AF_UNIX : alamat format diambil dari pathname UNIX.
- AF_INET : alamat format diambil dari host dan port number.
 
Setiap socket mempunyai satu bentuk protokol atau lebih, contoh :
- TCP/IP (virtual circuits)
- UDP (datagram)
 


Kegunaan

Connection-based sockets, sebagai komunikasi antara client-server. server menunggu koneksi dari client.
Connectionless sockets, komunikasi peer to peer; setiap proses adalah sama/simetris.
 
 
 

TCP-based Sockets

 
 
 
 
 
 

Socket API

- Socket (membuat sebuah socket)
- Bind (untuk membuat nama socket)
- Listen (menentukan jumlah koneksi yang tertunda yang nantinya bisa menjadi antrian untuk server socket)
- Accept (server menerima request dari client)
- Connect (client me-request koneksi ke server)
- Send, sendto (speak)
- Recv, recvfrom (listen)
- Shutdown (end the call)
 
 

The c0d3 - socket APIs

Baiklah, setelah sedikit mengenal apa itu socket, mari kita lihat bagaimana socket ini diimplementasikan.
 
#include<sys/types.h>
#include<sys/socket.h>

int socket(int domain, int type, int protocol);
 
Kode di atas menggunakan bahasa C. Untuk menggunakan socket, terlebih dahulu kita harus memanggil file library yang berhubungan dengan socket. Terlhat pada kode di atas adalah sebuah fungsi yang bernama socket yang mempunyai 3 parameter.
Fungsi tersebut mengembalikan sebuah file deskriptor (biasanya dikenal dengan socket ID) jika berhasil, namun -1 jika gagal.
 
Note:
Socket mengembalikan socket deksriptor yang mempunyai kesamaan sebagai file deskriptor.

 
Berikut ini adalah parameter yang digunakan:
domain adalah AF_INET
type, bisa berbentuk :
- SOCK_STREAM (sebagai virtual sirkuit untuk stream)
- SOCK_DGRAM (sebagai datagram untuk komunikasi)
- SOCK_SEQPACKET (sebagai koneksi yang reliable)

protocol, biasanya 0, sehingga type didefinisikan dengan domain
 
 

The c0d3 - bind

 
#include<sys/types.h>
#include<sys/socket.h>

int bind(int sid, struct sockaddr, *addrPtr, int len);
 
sid, berupa socket id
addrPtr, berupa pointer menuju alamat (tergantung dari struktur alamat)
len, sebagai ukuran dari *addrPtr
 
Note:
Dalam C Programming, pointer diidentifikasikan menggunakan tanda bintang(*). Masih bingung dengan pointer? Silahkan googling :D

Dalam Internet Protocol, bentuk alamat berupa [ipNumber,portNumber]
 
 

The c0d3 - sockaddr

Oke mungkin ini sample terakhir dari pembahasan kali ini.

Untuk internet
struct sockaddr_in {
  sa_family_t     sin_family; // = AF_INET
  in_port_t       sin_port;   // port number
  struct in_addr  sin_addr;   // IP Address
 }
 
 
Untuk UNIX Socket(hanya bekerja pada mesin yang sama)
struct sockaddr_un {
  uint8_t  sun_lenght; // = AF_LOCAL
  short    sun_family;   // null terminated pathname
  char     sun_path[100];   // 100 is posix
 }
 
Saat menggunakan Internet Socket, kedua parameter dari bind (type sockaddr_in *) harus di lempar ke (sockaddr *).
 
 

EoF

Well, untuk perkenalan mungkin masih kurang, karna ini hanya bagian terkecilnya saja. Namun setidaknya teman-teman sudah membayangkan bagaimana socket programming ini digunakan. Sebagai contoh, tau program chatting? Nah itu adalah implementasi dari socket programming. Socket programming juga bisa digunakan untuk membuat exploit loh :p

Sekian dulu tulisan dari saya, semoga bisa bermanfaat untuk kita semua :)
 
 
 
 
Referensi : Socket Programming in C/C++ by Mani Radhakrishnan and Jon Solworth
Format Lainnya : PDF | Google Docs | English Version
Diposting pada : Minggu, 06 November 11 - 21:05 WIB
Dalam Kategori : SOCKET, PROGRAMMING, JARINGAN, TCP/IP, LAN, INTERNET
Dibaca sebanyak : 16729 Kali
Fandi Surya WirawanFandi Surya Wirawan · Kutu Buku D
Diposting pada : Minggu, 06 November 11 - 21:36 WIB
Anda harus Login terlebih dahulu untuk mengirim komentar
Facebook Feedback