Prakt Modul Socket Programming (TCP UDP)
-
Upload
galih-satria -
Category
Documents
-
view
241 -
download
0
Transcript of Prakt Modul Socket Programming (TCP UDP)
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 1/23
PRAKTIKUM
SOCKET PROGRAMMING (TCP dan UDP)
I. Tujuan
1. Mahasiswa memahami konsep aplikasi client server di
jaringan.
2. Mahasiswa memahami konsep pemprograman
socket.
3. Mahasiswa memahami jenis – jenis socket
programming
4. Mahasiswa mampu membangun program socket
sederhana
II. Peralatan Yang Diutu!"an
1. Beberapa komputer yang berungsi sebagai
server .
2. Beberapa komputer yang berungsi sebagai
client .
3. Hub/switch sebagai penghubung
jaringan.
4. !abel jaringan
secukupnya.
III. Da#ar Te$ri
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 2/23
"etiap aplikasi di jaringan# transaksinya didasarkan pada konsep client ‐ server . "ebuah
server dan sebuah atau beberapa client yang meminta$request pelayanan ke server.
%ungsi server sebagai pengatur resource yang ada# yang menyediakan pelayanan dengan
memanaatkan resource yang untuk kebutuhan client. &roses ini 'proses client ‐ server ( bisa
dijalankan pada sebuah komputer 'komputer tunggal( atau bisa juga satu komputer berungsi
sebagai server dan sebuah atau beberapa komputer berungsi sebagai client.
Ga%ar & )lustrasi *+&
socket
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 3/23
Alg$rit!%a Pr$gra% Client'Serer %engguna"an Datagra% S$)"et
"erver
socket'(
bind'(
+lient
recvrom'(
socket'(
blocks u n til server
receives data rom clien t
data
sendto'(
sendto'(
close'(
dat
a recvrom'(
close'(
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 4/23
Ga%ar *. )lustrasi ,-& socket
I+. Tuga# Penda!uluan
1. elaskan secara singkat tentang 3‐way handshake di aplikasi *+&
2. elaskan perbedaan *+& dan ,-&
+. Per)$aan
A. SOCKET
PROGRAMMING UDP
PROGRAM C , I E NT
$/
// client,-&.c ‐‐ program client sederhana menggunakan datagram socket
/$
0include stdio.h
0include stdlib.h
0include unistd.h
0include errno.h
0include string.h
0include sys$types.h
0include sys$socket.h
0include netinet$in.h
0include arpa$inet.h
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 5/23
0include netdb.h
0deine M&5* 4678
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 6/23
0deine M9:B,%;<= 188
int main'(
>
char no?1@A# dt?38A
print'C‐‐‐‐‐ &5D59M +E9**)=D ‐‐‐‐‐FnC(
print'C*o G C(
scan'CHsC# no(
while'1(>
print'CMe G
C(
scan'CHsC#
dt( kirim'no#
dt( terima'(
I
I
int kirim'char no?A# char dt?A(
>
int sockd
struct sockaddrJin myJaddr
struct sockaddrJin
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 7/23
theirJaddr struct hostent
/he
int addrJlen# numbytes
i''he K gethostbyname'no(( KK =,;;(
>
perror'CgethostbynameC(
eLit'1(
I
i''sockd K socket'9%J)=<*# "+!J-D59M# 8(( KK ‐1(
>
perror'CsocketC(
eLit'1(
I
theirJaddr.sinJamily K 9%J)=<*
theirJaddr.sinJport K htons'M&5*(
theirJaddr.sinJaddr K /''struct inJaddr /(he‐
hJaddr( memset''theirJaddr.sinJNero(# OF8O# P(
KK ‐
1(
i''numbytesKsendto'sockd# dt#strlen'dt(#8#'struct sockaddr /(theirJaddr#siNeo'struct
sockaddr(((
>
perror'CsendtoC(
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 8/23
exit(1
}
close'sockd(
return 8
I
int terima'(
>
int sockd
struct sockaddrJin myJaddr
struct sockaddrJin
theirJaddr struct hostent
/he
int addrJlen# numbytes
char bu?M9:B,%;<=A
i''sockd K socket'9%J)=<*# "+!J-D59M# 8(( KK ‐1(
>
perror'CsocketC(
eLit'1(
I
myJaddr.sinJamily K 9%J)=<*
myJaddr.sinJport K htons'M&5*(
myJaddr.sinJaddr.sJaddr K
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 9/23
exit(1
}
)=9--5J9=
memset''myJaddr.sinJNero(#OF8O#P(
i'bind'sockd# 'struct sockaddr /(myJaddr# siNeo'struct sockaddr(( KK ‐1(
>
perror'CbindC(
eLit'1(
I
addrJlen K siNeo'struct sockaddr(
i''numbytes K recvrom'sockd#bu#M9:B,%;<=‐1#8#'struct sockaddr
/(theirJaddr#addrJlen(( KK ‐
1(
>
perror'CrecvromC(
eLit'1(
I
bu?numbytesAKOF8O
print'CHs G FCHsFCFnC# inetJntoa'theirJaddr.sinJaddr(# bu(
close'sockd(
return 8
I
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 10/23
PROGRAM SER+ER
$/
// server,-&.c ‐‐ program client sederhana menggunakan datagram socket
/$
0include stdio.h
0include stdlib.h
0include unistd.h
0include errno.h
0include string.h
0include sys$types.h
0include sys$socket.h
0include netinet$in.h
0include arpa$inet.h
0include netdb.h
0deine M&5* 4678
0deine M9:B,%;<= 188
char noip?78A $$untuk mendapatkan no ip dari client
int main'(
>
char no?1@A# dt?38A
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 11/23
print'C‐‐‐‐‐ &5D59M +E9**)=D ‐‐‐‐‐FnC(
terima'(
strcpy 'no# noip( $$copy data dari variable noip ke
variabel no while'1(>
print'CMe G
C(
scan'CHsC#
dt( kirim' dt(
terima'(
I
I
int kirim' char dt?38A(
>
int sockd
struct sockaddrJin myJaddr
struct sockaddrJin
theirJaddr struct hostent
/he
int addrJlen# numbytes
i''sockd K socket'9%J)=<*# "+!J-D59M# 8(( KK ‐1(
>
perror'CsocketC(
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 12/23
exit(1
}
theirJaddr.sinJamily K 9%J)=<*
theirJaddr.sinJport K htons'M&5*(
theirJaddr.sinJaddr K /''struct inJaddr /(he‐
hJaddr( memset''theirJaddr.sinJNero(# OF8O# P(
KK ‐
1(
i''numbytesKsendto'sockd# dt#strlen'dt(#8#'struct sockaddr /(theirJaddr#siNeo'struct
sockaddr(((
>
perror'CsendtoC(
eLit'1(
I
close'sockd(
return 8
I
int terima'(
>
int sockd
struct sockaddrJin myJaddr
struct sockaddrJin
theirJaddr struct hostent
/he
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 13/23
exit(1
}
int addrJlen# numbytes
char bu?M9:B,%;<=A
i''sockd K socket'9%J)=<*# "+!J-D59M# 8(( KK ‐1(
>
perror'CsocketC(
eLit'1(
I
myJaddr.sinJamily K 9%J)=<*
myJaddr.sinJport K htons'M&5*(
myJaddr.sinJaddr.sJaddr K
)=9--5J9=
memset''myJaddr.sinJNero(#OF8O#P(
i'bind'sockd# 'struct sockaddr /(myJaddr# siNeo'struct sockaddr(( KK ‐1(
>
perror'CbindC(
eLit'1(
I
addrJlen K siNeo'struct sockaddr(
i''numbytes K recvrom'sockd#bu#M9:B,%;<=‐1#8#'struct sockaddr
/(theirJaddr#addrJlen(( KK ‐
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 14/23
exit(1
}
1(
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 15/23
>
perror'CrecvromC(
eLit'1(
I
bu?numbytesAKOF8O
print'CHs G FCHsFCFnC# inetJntoa'theirJaddr.sinJaddr(# bu(
strcpy 'no# inetJntoa'theirJaddr.sinJaddr( $$copy data ke
varibel no close'sockd(
return 8
I
,ANGKA- PERCOAAN
1. "etelah selesai menulis dan menyimpan program# pastikan gcc sudah terinstall pada system
operasi linuL anda. alankan perintah G
0 dpkg –l Q grep gcc
ika belum ter install lakukan installasi paket gcc beserta librarynya.
0 aptRget install gcc gccR4.3
ika standard library belum terinstall# maka diinstall juga G
0 aptRget install libc@Rdev atau
0 aptRget install buildRessential
2. !ompilasi dan jalankan program
diatas a. &ada sisi server
0 gcc –o server,-& server,-&.c
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 16/23
0 .$server,-&
b.&ada sisi
client
0 gcc –o client,-& client,-&.c
0 .$client,-&
=BG "ebelum menjalankan program diatas# jalankan dulu wireshark disisi +lient.
4. +ek port yang digunakan oleh server 0 netstat –nlptu Q grep server,-&
. SOCKET
PROGRAMMING TCP
PROGRAM C , I E NT
$/
// client*+&.c ‐‐ program client sederhana menggunakan stream socket
/$
0include stdio.h
0include stdlib.h
0include unistd.h
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 17/23
0include errno.h
0include string.h
0include netdb.h
0include sys$types.h
0include netinet$in.h
0include sys$socket.h
0deine &5* 3333 $$ nomer port yang digunakan
0deine M9:-9*9")S< 188 $$ jumlah bytes maLimal yang
dikirimkan int main'(
>
int sockd# numbytes
char
bu?M9:-9*9")S<A
char
nilai?M9:-9*9")S<A
struct hostent /he
struct sockaddrJin theirJaddr $$ inormasi alamat
server char no?78A
print'C*o G C(
scan'CHsC# no(
print'CQQ 9nda adalah +lient QQFnC(
print'CQQ silahkan memulai pembicaraan QQFnC(
i ''heKgethostbyname'no(( KK =,;;( > $$ mencari ino
tentang host perror'CgethostbynameC(
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 18/23
eLit'1(
I
i ''sockd K socket'9%J)=<*# "+!J"*5<9M# 8(( KK ‐1( >
perror'CsocketC(
eLit'1(
I
theirJaddr.sinJamily K 9%J)=<* $$ host byte order
theirJaddr.sinJport K htons'&5*( $$ short# network byte
order theirJaddr.sinJaddr K /''struct inJaddr /(he‐hJaddr(
memset''theirJaddr.sinJNero(# OF8O# P( $$ lainnya diisi
8
i 'connect'sockd# 'struct sockaddr
/(theirJaddr# siNeo'struct sockaddr((
KK ‐1( > perror'CconnectC(
eLit'1(
I
while'1(>
print'C+lient G C(
scan'CHsC#nilai( $$data yang akan dikirim
ke server i 'send'sockd#nilai#78# 8(KK ‐1(>
perror'CsendC(
eLit'8(
I
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 19/23
numbytesK8
i ''numbytesKrecv'sockd# bu# M9:-9*9")S<‐1# 8(( KK ‐1( >
perror'CrecvC(
eLit'8(
I
i'numbytes 1(>
bu?numbytesA K OF8O
print'C"erverG Hs FnC#bu( $$data dari server
I
I
close'sockd( $$menutup
socket return 8
I
PROGRAM SER+ER
$/
// server*+&.c ‐‐ program server sederhana menggunakan stream socket
/$
0include stdio.h
0include stdlib.h
0include unistd.h
0include errno.h
0include string.h
0include sys$types.h
0include sys$socket.h
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 20/23
0include netinet$in.h
0include arpa$inet.h
0include sys$wait.h
0include signal.h
0deine M&5* 3333 $$ nomer port yang digunakan
0deine B9+!;D 18 $$ jumlah koneksi yang diperbolehkan
0deine M9:-9*9")S< 48 $$ jumlah bytes maLimal yang dikirimkan
int main'void(
>
int sockd# newJd#numbytes $$ sockJd ‐‐‐ koneksi saat ini# newJd ‐‐‐‐
kon baru struct sockaddrJin myJaddr $$ ip address server
char bu?M9:-9*9")S<A#nilai?M9:-9*9")S<A
struct sockaddrJin theirJaddr $$ ip address
client int sinJsiNe
struct sigaction sa
int yesK1
i ''sockd K socket'9%J)=<*# "+!J"*5<9M# 8(( KK ‐1( >
perror'CsocketC(
eLit'1(
I
i 'setsockopt'sockd#"4;J"4+!<*#"4J5<,"<9--5#yes#siNeo'int((KK ‐1(
>
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 21/23
perror'CsetsockoptC(
eLit'1(
I
myJaddr.sinJamily K 9%J)=<* $$ host byte order atau 'big
endian( myJaddr.sinJport K htons'M&5*( $$ short# network byte
order myJaddr.sinJaddr.sJaddr K )=9--5J9= $$ diisi dengan ip
address server memset''myJaddr.sinJNero(# OF8O# P( $$ lainya
diisi 8
i 'bind'sockd# 'struct sockaddr /(myJaddr# siNeo'struct sockaddr((KK ‐1( >
perror'CbindC(
eLit'1(
I
i 'listen'sockd# B9+!;D( KK ‐1( >
perror'ClistenC(
eLit'1(
I
sinJsiNe K siNeo'struct sockaddrJin(
i ''sockd K accept'sockd# 'struct sockaddr /(theirJaddr# sinJsiNe(( KK ‐1( >
perror'CacceptC(
I
print'CQQ 9nda adalah "erver QQFnC(
print'C"erver mendapat koneksi dari HsFnC#inetJntoa'theirJaddr.sinJaddr((
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 22/23
while'1(>
numbytesK8
i ''numbytesKrecv'sockd#bu# M9:-9*9")S<‐1# 8(( KK ‐1(>
perror'CrecvC(
I
i'numbytes TK 8(
> bu?numbytesAKKOF8O
print'C+lient G Hs FnC
#bu(
I
print'C"erver G C(
scan'CHsC#nilai(
i 'send'sockd# nilai# 78# 8( KK ‐1(>
perror'CsendC(
I
I
close'sockd
( return 8
I
,ANGKA- PERCOAAN
1. ;akukan kompilasi program client dan server# dengan cara G
0 cd $home
0 gcc –o client*+& client*+&.c
7/23/2019 Prakt Modul Socket Programming (TCP UDP)
http://slidepdf.com/reader/full/prakt-modul-socket-programming-tcp-udp 23/23
0 gcc –o server*+& server*+&.c
2. alankan program server dan selanjutnya jalankan program client# dengan cara berikut ini G
0.$server*+&
0.$client*+&
=BG "ebelum menjalankan program diatas# jalankan dulu wireshark di sisi
+lient.
3. 9mati output yang dihasilkan. +atat inormasi yang dihasilkan oleh wireshark.
4. +atat proses terjadinya 3‐way handshake dari wireshark.
7. +ek port yang digunakan oleh server
0 netstat –nlptu Q grep server*+&
@. <ditlah program untuk *+& diatas agar sama dengan program aplikasi untuk ,-&. Buat
dalam bentuk ungsi.