Setiap kali kita berbicara masalah TCP/IP, maka akan selalu muncul istilah socket. Socket adalah mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses baik dalam satu mesin maupun antar mesin. Pada setiap lingkungan sistem operasi yang mampu berkomunikasi dengan protokol TCP/IP, fasilitas socket selalu tersedia.
Berikut ini adalah command atau perintah yang digunakan dalam pemograman socket (socket programming) :
Fungsi Socket()
- Untuk dpt mengakses I/O Network, maka proses harus memanggil fungsi socket()
- include <sys/socket.h>
- int socket(int family, int type, int protocol);
- Fungsi socket akan mengembalikan non-negatip descriptor jika sukses, dan akan mengembalikan –1 jika ada error.
- Umumnya parameter protocol pada fungsi socket di set 0 (protocol yg digunakan sesuai tabel, lihat kuliah sebelumnya), kecuali untuk raw socket.
Fungsi Connect()
- Fungsi connect() digunakan oleh fungsi client untuk melakukan koneksi dengan TCP Server.
- #include <sys/socket.h>
- int connect (int sockfd, const struct sockaddr *servaddr, socklen_t addrlen);
- sockfd adalah TCP Socket yang sudah di-create sebelumnya.
- servaddr berisi address server(IP Address and TCP port number) connect() returns 0 if OK, -1 on error
Fungsi bind()
- Fungsi bind() digunakan untuk memberikan alamat (IP dan Nomor Port) yg ada pada sockaddr structure ke socket descriptor.
- #include <sys/socket.h>
- int bind( int sockfd, const struct sockaddr *myaddr, int addrlen);
- Fungsi bind() mengembalikan nilai 0 jika sukses, atau -1 jika terjadi error.
Contoh:
int mysock,err;
struct sockaddr_in myaddr;
mysock = socket(AF_INET,SOCK_STREAM,0);
myaddr.sin_family = AF_INET;
myaddr.sin_port = htons(80);
myaddr.sin_addr = htonl(ipaddress);
err=bind(mysock, (sockaddr *) &myaddr, sizeof(myaddr));
Server dapat menggunakan fungsi bind(), untuk “well known port” atau specific port.
Fungsi Accept()
- Pada saat memanggil fungdi listen(), system operasi akam antri dalam koneksi masuk
- Ketika aplikasi sudah siap menangani koneksi baru, kita harus bertanya pada system operasi untuk koneksi selanjutnya.
- #include <sys/socket.h>
- int accept( int sockfd,struct sockaddr* cliaddr, socklen_t *addrlen);
- sockfd adalah TCP socket yang sudah dicreate sebelumnya.
- cliaddr adalah petunjuk keruang yang dialokasikan/ dituju.
- addrlen adalah sebuah hasil nilai argumen
- harus diset ke ukuran cliaddr
Fungsi : read(), write()
Contoh:
n = read(sockfd, buf, MAXLINE);
write(sockfd, buff, strlen(buff));
Fungsi : send(), recv()
Sintak :
#include <sys/types.h>
#include <sys/socket.h>
ssize_t send(int s, const void *msg, size_t len, int flags);
ssize_t recv(int s, void *buf, size_t len, int flags);
- send() digunakan untuk mengirim message ke socket yang lain.
- send() hanya bisa digunakan bila socket sudah dalam mode terkoneksi dengan socket yang lainnya.
- recv() digunakan untuk menerima message dari socket yang lain.
- recv() hanya bisa digunakan bila socket sudah dalam mode terkoneksi dengan socket yang lainnya.
Fungsi : sendto(), recvfrom
- Sintak:
- #include <sys/types.h>
- #include <sys/socket.h>
- ssize_t sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);
- ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sock-addr *from, socklen_t *fromlen);
- sendto() digunakan untuk mengirim message ke socket, yang sudah ter-koneksi atau belum.
- recvfrom() digunakan untuk menerima message dari socket, yang sudah ter-koneksi atau belum