Prakt Modul Socket Programming (TCP UDP)

23
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

Transcript of Prakt Modul Socket Programming (TCP UDP)

Page 1: 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

Page 2: 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 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

Page 3: 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 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'(

Page 4: 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 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

Page 5: 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 5/23

0include netdb.h

0deine M&5* 4678

Page 6: 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 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

Page 7: 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 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(

Page 8: 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 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

Page 9: 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 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

Page 10: 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 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

Page 11: 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 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(

Page 12: 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 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

Page 13: 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 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 ‐

Page 14: 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 14/23

exit(1

}

1(

Page 15: 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 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

Page 16: 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 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

Page 17: 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 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(

Page 18: 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 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

Page 19: 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 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

Page 20: 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 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(

>

Page 21: 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 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((

Page 22: 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 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

Page 23: 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 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.