Bab 10 Dasar Socket Programming - Udp
Bab 10 Dasar Socket Programming - Udp
I. Tujuan
1. Mahasiswa Mengenal konsep Client Server
2. Mahasiswa Mengenal protokol TCP/IP untuk Interaksi Client Server
3. Mahasiswa Mengenal konsep API
4. Mahasiswa Mengenal Datagram Socket
5. Mahasiswa Memahami Konsep Pembuatan Pemprograman Datagram Socket
untuk Komunikasi Client-Server
6. Mahasiswa Mampu Membuat Pemprograman Datagram Socket untuk
Komunikasi Client-Server
Jenis socket yang kedua yaitu datagram socket disebut juga connectionless
socket sebab untuk interaksi client-server tidak harus selalu terhubung terus
menerus. Jika client mengirimkan data ke server, data tersebut ada kemungkinan
99
sampai ke server atau tidak. Untuk itu client menunggu sinyal ‘error free’ dari
client. Jika client tidak menerima sinyal ‘error free’ dalam suatu kurun waktu,
maka client akan mengirimkan lagi data tersebut. Contoh aplikasi yang
menggunakan datagram socket adalah tftp dan bootp.
Data yang dikirimkan melalui datagram socket akan melalui proses yang diberi
nama enkapsulasi (data encapsulation). Data yang akan dikirimkan sebelumnya
dibungkus dulu dengan sebuah header dari protokol yang pertama (misalnya
TFTP), lalu dibungkus lagi dengan protokol berikutnya (misalnya UDP), lalu IP
dan yang terakhir dibungkus dengan ethernet protocol pada physical layer.
SERVER CLIENT
socket socket
bind pengalamatan
recvfrom sendto
close close
100
a. Membuka koneksi client ke server, yang di dalamnya adalah :
Membuat socket dengan perintah socket().
melakukan pengalamatan ke server.
b. Melakukan komunikasi (mengirimkan data), dengan menggunakan
perintah sendto()
c. Menutup hubungan dengan perintah close();
Struktur Pengalamatan
Struktur pengalamatan yang dipakai antara stream socket dan datagram socket
tidak ada perbedaan.
Dibawah ini adalah structure yang dipakai.
struct sockaddr_in {
unsigned short sin_family; /* address family (always AF_INET)
*/
unsigned short sin_port; /* port num in network byte order */
struct in_addr sin_addr; /* IP addr in network byte order */
unsigned char sin_zero[8]; /* pad to sizeof(struct sockaddr) */
};
Contoh pemakaian struktur tersebut bisa dilihat pada tabel berikut ini:
int sockfd;
struct sockaddr_in their_addr; // connector's address information
struct hostent *he;
101
int numbytes;
102
}
b. Melakukan pengalamatan.
my_addr.sin_family = AF_INET; // host byte order
my_addr.sin_port = htons(MYPORT); // short, network
byte order
my_addr.sin_addr.s_addr = INADDR_ANY; // automatically
fill with my IP
memset(&(my_addr.sin_zero), '\0', 8); // zero the rest
of the struct
103
perror("bind");
exit(1);
}
2. listener.c
104
** talker.c -- a datagram "client" demo
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
if (argc != 3) {
fprintf(stderr,"usage: talker hostname
message\n");
exit(1);
}
105
}
if ((numbytes=sendto(sockfd, argv[2],
strlen(argv[2]), 0,
(struct sockaddr *)&their_addr, sizeof(struct
sockaddr))) == -1) {
perror("sendto");
exit(1);
}
close(sockfd);
return 0;
}
/*
** listener.c -- a datagram sockets "server" demo
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
106
#include <arpa/inet.h>
int main(void)
{
int sockfd;
struct sockaddr_in my_addr; // my address
information
struct sockaddr_in their_addr; // connector's
address information
int addr_len, numbytes;
char buf[MAXBUFLEN];
107
if ((numbytes=recvfrom(sockfd,buf, MAXBUFLEN-1,
0,
(struct sockaddr
*)&their_addr, &addr_len)) == -1) {
perror("recvfrom");
exit(1);
}
close(sockfd);
return 0;
}
108
VI. Laporan Resmi
Tugas Pendahuluan :
Hasil percobaan :
Daftar Pertanyaan
Berikan kesimpulan praktikum yang anda lakukan.
Pada pemprograman socket datagram, untuk mengetahui data sampai atau tidak,
client menunggu sinyal ‘error free’ dari server. Jika client tidak menerima sinyal
‘error free’ dalam suatu kurun waktu, maka client akan mengirimkan lagi data
tersebut. Modifikasi program yang anda buat supaya bisa mengakomodasi ‘error
free’ tersebut.
109