Socket adalah Saluran komunikasi antarkomputer yang berbasis
protocol internet socket programming adalah bagaimana cara menggunakan socket
API ( Application Socket Programming ), untuk menghubungkan komunikasi antara
proses remote dan local. Sedangkan API adalah sebuah library atau fungsi
windows untuk mengeksekusi sebuah perintah yang ada di dalam semua tampilan
windows , sebagai contoh untuk tampilan desktop ,screen saver ,shutdown
computer dll.
Jenis protokol
·
TCP (Transmission
Control Protocol)
adalah protokol
yang paling umum digunakan di Internet. Alasan untuk ini
adalah karena TCP menawarkan koreksi kesalahan. Ketika
protokol TCP digunakan ada “guaranteed delivery.” yaitu jaminan bahwa
packet akan terkirim. Hal ini disebabkan metode yang disebut “flow
control.” Flow control menentukan kapan data harus dikirim
kembali, dan menghentikan aliran
data paket sebelumnya sampai berhasil ditransfer. Saat
paket data dikirim, tabrakan dapat terjadi. Ketika
ini terjadi, client akan meminta kembali paket dari server sampai seluruh paket lengkap
dan identik dengan aslinya.
·
UDP (User
Datagram Protocol)
adalah protokol
yang umum digunakan di Internet. Namun, UDP tidak pernah
digunakan untuk mengirim data penting seperti halaman
web, informasi database, dll. UDP umumnya digunakan
untuk streaming audio dan video. Media streaming seperti
Windows Media audio files (. WMA), Real
Player (. RM), dan lain-lain menggunakan UDP karena
menawarkan kecepatan! Alasan UDP lebih cepat
daripada TCP adalah karena tidak ada bentuk flow control
atau koreksi kesalahan. Data yang dikirim melalui
Internet dipengaruhi oleh tabrakan, dan error akan muncul.
Ingatlah bahwa UDP hanya berkaitan dengan
kecepatan. Ini adalah alasan utama mengapa
media streaming tidak berkualitas tinggi.
Port
Dalam protokol jaringan,TCP/IP.
sebuah port adalah mekanisme yang mengizinkan sebuah komputer untuk mendukung
beberapa sesi koneksi dengan komputer lainnya dan program di dalam jaringan.
Port dapat mengidentifikasikan aplikasi dan layanan yang menggunakan koneksi di
dalam jaringan TCP/IP. Sehingga, port juga mengidentifikasikan sebuah proses
tertentu di mana sebuah server dapat memberikan sebuah layanan kepada klien
atau bagaimana sebuah klien dapat mengakses sebuah layanan yang ada dalam
server. Port dapat dikenali dengan angka 16bit (dua byte) yang disebut dengan
Port Number dan diklasifikasikan dengan jenis protokol transport apa yang
digunakan, ke dalam Port TCP dan Port UDP. Karena memiliki angka 16-bit, maka
total maksimum jumlah port untuk setiap protokol transport yang digunakan
adalah 65536 buah.
Dilihat dari penomorannya, port UDP
dan TCP dibagi menjadi tiga jenis, yakni sebagai berikut:
·
Well-known
Port: yang pada awalnya berkisar antara 0 hingga 255 tapi kemudian diperlebar
untuk mendukung antara 0 hingga 1023. Port number yang termasuk ke dalam
well-known port, selalu merepresentasikan layanan jaringan yang sama, dan
ditetapkan oleh Internet Assigned Number Authority (IANA). Beberapa di antara
port-port yang berada di dalam range Well-known port masih belum ditetapkan dan
direservasikan untuk digunakan oleh layanan yang bakal ada di masa depan.
Sebagai contoh www atau http ada di port 80, sedangkan mail ada di port 25
·
Registered
Port: Port-port yang digunakan oleh vendor-vendor komputer atau jaringan yang
berbeda untuk mendukung aplikasi dan sistem operasi yang mereka buat.
Registered port juga diketahui dan didaftarkan oleh IANA tapi tidak
dialokasikan secara permanen, sehingga vendor lainnya dapat menggunakan port
number yang sama. Range registered port berkisar dari 1024 hingga 49151 dan
beberapa port di antaranya adalah Dynamically Assigned Port.
·
Dynamically
Assigned Port: merupakan port-port yang ditetapkan oleh sistem operasi atau
aplikasi yang digunakan untuk melayani request dari pengguna sesuai dengan
kebutuhan. Dynamically Assigned Port berkisar dari 1024 hingga 65536 dan dapat
digunakan atau dilepaskan sesuai kebutuhan.
Contoh Socket
Programming bahasa C : Chat sederhana client - server
Sesuai dengan judulnya,
kita akan membuat sebuah program chat antara client dengan server menggunakan
bahasa C. Siapkan text editor untuk
membuat kode.
Pertama, kita akan membuat server berikut ini kode yang perlu diketikkan
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<stdlib.h>
#include<string.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,MAX);
read(sockfd,buff,sizeof(buff));
printf("From client: %s\t To client :
",buff);
bzero(buff,MAX);
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
if(strncmp("exit",buff,4)==0)
{
printf("Server Exit...\n");
break;
}
}
}
int main()
{
int sockfd,connfd,len;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(PORT);
if((bind(sockfd,(SA*)&servaddr,
sizeof(servaddr)))!=0)
{
printf("socket bind failed...\n");
exit(0);
}
else
printf("Socket successfully binded..\n");
if((listen(sockfd,5))!=0)
{
printf("Listen failed...\n");
exit(0);
}
else
printf("Server listening..\n");
len=sizeof(cli);
connfd=accept(sockfd,(SA *)&cli,&len);
if(connfd<0)
{
printf("server acccept failed...\n");
exit(0);
}
else
printf("server acccept the client...\n");
func(connfd);
close(sockfd);
}
Setelah itu kita membuat client dengan kode berikut :
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,sizeof(buff));
printf("Enter the string : ");
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
bzero(buff,sizeof(buff));
read(sockfd,buff,sizeof(buff));
printf("From Server : %s",buff);
if((strncmp(buff,"exit",4))==0)
{
printf("Client Exit...\n");
break;
}
}
}
int main()
{
int sockfd,connfd;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servaddr.sin_port=htons(PORT);
if(connect(sockfd,(SA
*)&servaddr,sizeof(servaddr))!=0)
{
printf("connection with the server
failed...\n");
exit(0);
}
else
printf("connected to the server..\n");
func(sockfd);
close(sockfd);
}
Setelah selesai membuat file kode bahasa C, buka
terminal, ubah direktori ke lokasi file .c, kemudian compile dan run file .c.
Setelah server dijalankan, buka terminal baru, ubah
direktori seperti langkah sebelumnya, kemudian compile dan run dengan cara yang
sama seperti langkah sebelumnya. Lalu muncul tempat untuk mengisi pesan di
kedua jendela terminal. Sekarang coba menulis pesan "halo" pada
client, coba perhatikan yang muncul di server. Pesan dari client muncul di
jendela server, kemudian coba mengirim pesan balik "halo juga "