Matakuliah : H0483 / Network Programming Tahun : 2008 Versi : 2.0

Slides:



Advertisements
Presentasi serupa
Aplikasi dan Pemrograman Jaringan
Advertisements

Referensi Model TCP/IP
Pemrograman Client Server
SISTEM TERDISTRIBUSI (SILABUS dan Introduction to Distributed Systems)
Networking, Protokol, dan Interoperabilitas
Pertemuan 5 Server dengan Multi Proses pada Linux
User Datagram Protocol (UDP)
Socket Programming Isbat Uzzin.
Hernando Ivan Teddy S. Kom
Pertemuan 2 Socket Introduction
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
OSI (Open System Interconnection) Layer
Pertemuan 4 Aplikasi Perhitungan Gaya Dengan Program Komputer
1 Pertemuan 5 STREAM INPUT/OUPUT Matakuliah: T0456 ~ Algoritma dan Metode Object Oriented Programming Tahun: 2005 Versi: 5.
TRANSPORT LAYER PROTOCOLS ( TCP DAN UDP )
UDP Socket Programming
1 Pertemuan 1 Pendahuluan Matakuliah: H0483 – Network Programming Tahun: 2005 Versi: 1.0.
Nyimas Artina, S. Kom, M.Si Pemrograman Jaringan Penjelasan Umum Nyimas Artina, S. Kom, M.Si.
Pertemuan 3 ELEMENTARY TCP SOCKETS
DASAR SOCKET PROGRAMMING
TCP Socket Programmning
OPERASI JUMP DAN EXCEPTION HANDLING
1 Pertemuan 10 Pemrograman Jaringan pada Windows dengan VC ) Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0.
1 Pertemuan 8 Advanced I/O function Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
Pemrograman Komputer dalam analisa Struktur Baja
1 Pertemuan 7 Klasifikasi dan Rekognisi Pola (1) Matakuliah: T0283 – Computer Vision Tahun: 2005 Versi: Revisi 1.
Pertemuan 5 Balok Keran dan Balok Konsol
1 Pertemuan 5 Diferensial Matakuliah: R0262/Matematika Tahun: September 2005 Versi: 1/1.
Fungsi Logaritma Pertemuan 12
Pertemuan 10 Sendi-Sendi Arsitektur Modern
1 Pertemuan 12 Kasus : Final Matakuliah: M0064/Programming I Tahun: 2005 Versi: >
1 Pertemuan 5 PPh PASAL 21 Matakuliah: A0572/ Perpajakan Tahun: 2005 Versi: Revisi 1.
Pertemuan 10 Gaya – gaya dalam
Pertemuan 5 I/O Multiplexing
Matakuliah : R0022/Pengantar Arsitektur Tahun : Sept 2005 Versi : 1/1
1 Pertemuan ketujuh Pola-pola kaliamt percakapan Matakuliah: >/ > Tahun: > Versi: >
1 Pertemuan 14 APLIKASI BACK PROPAGATION Matakuliah: H0434/Jaringan Syaraf Tiruan Tahun: 2005 Versi: 1.
1 Pertemuan 9 Unix Domain Protocol Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
1 Pertemuan 13 Pembahasan Kasus Matakuliah: M0462/Programming I Tahun: 2005 Versi: >
1 Pertemuan 9 Integral Matakuliah: R0262/Matematika Tahun: September 2005 Versi: 1/1.
1 Pertemuan 7 Diferensial Matakuliah: R0262/Matematika Tahun: September 2005 Versi: 1/1.
Matakuliah : R0262/Matematika Tahun : September 2005 Versi : 1/1
Pertemuan 04 Fungsi-fungsi Microsoft Excel
1 Pertemuan 19 Rendering perspektif mata burung Matakuliah: R0124 / Teknik Komunikasi Arsitektur Tahun: 2005 Versi: >/ >
1 Pertemuan 12 Membuat Program Client dan Server pada Win32 Console Application Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0.
Matakuliah : H0483 – Network Programming Tahun : 2008 Versi : 2.0
Referensi Model TCP/IP
Matakuliah : K0074/Kalkulus III Tahun : 2005 Versi : 1/0
Matakuliah : H0483 – Network Programming Tahun : 2008 Versi : 2.0
Pertemuan 10 PAJAK PERTAMBAHAN NILAI dan PPn BM
Transport layer Jarkom Dasar - Week 5 Aisyatul Karima, 2012.
Matakuliah : H0483 – Network Programming Tahun : 2008 Versi : 2.0
Pertemuan 16 SISTEM AKUNTANSI UTANG
Pertemuan 11 Pemrograman Winsock pada VB
Matakuliah : K0074/Kalkulus III Tahun : 2005 Versi : 1/0
PERTEMUAN KETUJUH Referensi Model DoD.
Matakuliah : T0456 ~ Algoritma dan Metode Object Oriented Programming
Referensi Model TCP/IP
Pertemuan 3 Diferensial
PROTOCOL PROTOCOL TCP/IP.
Soal Latihan Pertemuan 03 Network Programming
Matakuliah : A0114/ Sistem Akuntansi Tahun : 2005 Versi : Revisi 1
Matakuliah : I0014 / Biostatistika Tahun : 2005 Versi : V1 / R1
Tahun : <<2005>> Versi : <<1/2>>
SISTEM JARINGAN KOMPUTER
INTERNETWORKING Didi Juardi,ST.,M.Kom.
Jaringan Komputer Week 2-Protocol Jaringan -TCP/IP Reference Model.
TCP Socket Programmning
UDP Socket Programming
OSI 7 LAYER Nama Kelompok : IDA AYU AGUNG KRISNA DEWI ( )
Transcript presentasi:

Matakuliah : H0483 / Network Programming Tahun : 2008 Versi : 2.0 Pertemuan 8 UDP Sockets

Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mahasiswa dapat mendemonstrasikan program dengan menggunakan UDP Sockets

Beda protocol TCP dengan UDP Recvfrom and sendto functions Outline Materi Beda protocol TCP dengan UDP Recvfrom and sendto functions Blocking dan UnBlocking Kasus : UDP Echo Server kasus : UDP Echo Client

Introduction UDP Connectionless Unreliable Datagram protocol Beberepa aplikasi yg terkenal yg menggunakan UDP : DNS (Domain Name System) NFS (Network File System) SNMP (Simple Network Management Protocol)

UDP Sockets Programming Creating UDP sockets Client Server Sending data Receiving data

Creating a UDP socket int sock; sock = socket( PF_INET, SOCK_DGRAM, 0); if (sock<0) { /* ERROR */ }

Binding to well known address typically done by server only int mysock; struct sockaddr_in myaddr; mysock=socket(PF_INET,SOCK_DGRAM,0); myaddr.sin_family = AF_INET; myaddr.sin_port = htons(1234); myaddr.sin_addr = htonl(INADDR_ANY); bind(mysock, &myaddr, sizeof(myaddr));

Sending UDP Datagrams size_t sendto( int sockfd, void *buff, size_t nbytes, int flags, const struct sockaddr* to, socklen_t addrlen); sockfd is a UDP socket buff is the address of the data (nbytes long) to is the address of a sockaddr containing the destination address Return value is the number of bytes sent, or -1 on error.

sendto() You can send 0 bytes of data! Some possible errors : EBADF, ENOTSOCK: bad socket descriptor EFAULT: bad buffer address EMSGSIZE: message too large ENOBUFS: system buffers are full The return value of sendto() indicates how much data was accepted by the O.S. for sending as a datagram - not how much data made it to the destination. There is no error condition that indicates that the destination did not get the data!!!

Receiving UDP Datagrams ssize_t recvfrom( int sockfd, void *buff, size_t nbytes, int flags, struct sockaddr* from, socklen_t *fromaddrlen); sockfd is a UDP socket buff is the address of a buffer (nbytes long) from is the address of a sockaddr. Return value is the number of bytes received and put into buff, or -1 on error.

recvfrom() If buff is not large enough, any extra data is lost forever... You can receive 0 bytes of data! The sockaddr at from is filled in with the address of the sender. You should set fromaddrlen before calling. If from and fromaddrlen are NULL we don’t find out who sent the data.

Typical UDP client code Create UDP socket. Create sockaddr with address of server. Call sendto(), sending request to the server. No call to bind() is necessary! Possibly call recvfrom() (if we need a reply).

Typical UDP Server code Create UDP socket and bind to well known address. Call recvfrom() to get a request, noting the address of the client. Process request and send reply back with sendto().

UDP Echo Server int mysock; struct sockaddr_in myaddr, cliaddr; char msgbuf[MAXLEN]; socklen_t clilen; int msglen; mysock = socket(PF_INET,SOCK_DGRAM,0); myaddr.sin_family = AF_INET; myaddr.sin_port = htons( S_PORT ); myaddr.sin_addr = htonl( INADDR_ANY ); bind(mysock, &myaddr, sizeof(myaddr)); while (1) { len=sizeof(cliaddr); msglen=recvfrom(mysock,msgbuf,MAXLEN,0, cliaddr,&clilen); sendto(mysock,msgbuf,msglen,0,cliaddr, clilen); }

Timeout when calling recvfrom() It might be nice to have each call to recvfrom() return after a specified period of time even if there is no incoming datagram. We can do this by using SIGALRM and wrapping each call to recvfrom() with a call to alarm()

Fungsi recvfrom() dan alarm() signal(SIGALRM, sig_alrm); alarm(max_time_to_wait); if (recvfrom(…)<0) if (errno==EINTR) /* timed out */ else /* some other error */ /* no error or time out - turn off alarm */ alarm(0);

UDP Echo Client Int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr; if(argc != 2) { printf(“usage: udpcli <Ipaddress>”); exit(0); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); Inet_pton(AF_INET, argv[1], &servaddr.sin_addr); Sockfd = socket(AF_INET, SOCK_DGRAM, 0); While() Sendto( Recvfrom(

Salah satu solusi : menambah fasilitas time-out pada client Lost Datagrams Program UDP Client – Server pada contoh diatas : tidak handal (not reliable) Jika Server tdk running, program client di block selamanya pada saat memanggil fungsi recvfrom Jika client datagram sampai pada server, tetapi datagram yg dikirim/dibalas oleh server hilang, maka client akan di blok lagi Salah satu solusi : menambah fasilitas time-out pada client

The Client Blocks forever in its call to recvfrom Server Not Running The Client Blocks forever in its call to recvfrom

Jelaskan perbedaan antara protokol TCP dengan UDP Latihan Jelaskan perbedaan antara protokol TCP dengan UDP Kapan sebaiknya menggunakan TCP ? Kapan sebaiknya menggunakan UDP ?

Latihan Membuat Program Buat program DayTimeServer dan DayTimeClient dengan menggunakan protokol UDP dengan menggunakan bahasa C pada Linux.