Pertemuan 3 ELEMENTARY TCP SOCKETS

Slides:



Advertisements
Presentasi serupa
Aplikasi dan Pemrograman Jaringan
Advertisements

Kelas A & B Jonh Fredrik Ulysses STMIK PALANGKARAYA - JFU
TCP mengatur aliran data gram dari lapisan di atasnya (lapisan aplikasi) hingga lapisan IP, sebagaimana datagram yang datang dari lapisan IP hingga ke.
JAVA Network Programming. Apa itu JAVA? ● Bahasa pemrograman berorientasi objek yang dikembangkan oleh Sun Microsystems sejak tahun ● Dikembangkan.
Fourth Generation programming language
Pemrograman Jaringan Socket Programming Aurelio Rahmadian.
Konsep Dasar Protokol Jaringan
Komunikasi antar Proses
Pemrograman Client Server
SISTEM TERDISTRIBUSI (SILABUS dan Introduction to Distributed Systems)
Pertemuan 5 Server dengan Multi Proses pada Linux
Alokasi Memori Yuliana Setiowati.
Socket Programming Hernando Ivan Teddy S.Kom. Pertemuan 6 Pemrograman Jaringan STMIK GI MDP PALEMBANG 2013.
Socket Programming Isbat Uzzin.
IP Address Dedi Hermanto.
Lecture 5 Nonblocking I/O and Multiplexing Erick Pranata © Sekolah Tinggi Teknik Surabaya 1.
Pengembang aplikasi memiliki kemampuan untuk memperbaiki beberapa parameter TCP, seperti buffer dan maksimum ukuran segmen maksimum Socket Programming.
Matakuliah : H0483 / Network Programming Tahun : 2008 Versi : 2.0
Pertemuan 2 Socket Introduction
Pertemuan 6 Server dengan Multi Thread pada Linux
Structure Data - Array Pertemuan 7 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
FUNCTIONS Pertemuan 9 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
TRANSPORT LAYER PROTOCOLS ( TCP DAN UDP )
UDP Socket Programming
1 Pertemuan 1 Pendahuluan Matakuliah: H0483 – Network Programming Tahun: 2005 Versi: 1.0.
UDP.
Pertemuan 3 & 4 Interface Mikroprosesor secara Paralel
DASAR SOCKET PROGRAMMING
TCP Socket Programmning
Aplikasi Mikroprosesor dan Interfacing
1 Pertemuan Fungsi Matakuliah: T0016 / Algoritma dan Pemrograman Tahun: 2007 Versi: 6.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
1 Pertemuan 05 Procedure dan Parameter Matakuliah: T0063/Pemrograman Visual Tahun: 2005 Versi: 1/0.
1 Pertemuan 10 Pemrograman Jaringan pada Windows dengan VC ) Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0.
Matakuliah : T0016 / Algoritma dan Pemrograman Tahun : 2007 Versi : 6
1 Pertemuan 26 Teknik Hashing Matakuliah: T0016/Algoritma dan Pemrograman Tahun: 2005 Versi: versi 2.
1 Pertemuan 7 Name and Address Conversion Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
Aasliyaniunm10.wordpress.com. DNS Server adalah komponen yang berfungsi menerjemahkan nama domain dengan IP address atau sebatiknya. Dengan menggunakan.
1 Pertemuan 8 Advanced I/O function Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
STRUKTUR DATA QUEUE.
SISTEM TERDISTRIBUSI CSG3L3 ~SPO~
Pertemuan 5 I/O Multiplexing
1 Pertemuan 3 Komponen Sistem Komputer dan Register pada prosesor 8088 Matakuliah: T0483 / Bahasa Rakitan Tahun: 2005 Versi: versi 1.0 / revisi 1.0.
Pertemuan 7 Optimasi Pemrograman C
1 Pertemuan 9 Unix Domain Protocol Matakuliah: H0483 / Network Programming Tahun: 2005 Versi: 1.0.
Socket Programming - 1 (TCP)
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
Transport Layer Electronic Engineering Polytechnic Institut of Surabaya – ITS Kampus ITS Sukolilo Surabaya
Materi 6 Lapis Transport
Matakuliah : H0483 – Network Programming Tahun : 2008 Versi : 2.0
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
TCP & UDP.
Transport layer Jarkom Dasar - Week 5 Aisyatul Karima, 2012.
TCP / IP Kelompok III.
Pertemuan 13 Pengendalian File
Pertemuan 2 Socket Introduction
Aplikasi dan Pemrograman Jaringan
Struktur Data Khoiriya Latifa, M.Kom.
Socket Programming - 1 (TCP)
Pertemuan 6 Server dengan Multi Thread
TRANSPORT LAYER PROTOKOL
Chapter 4 Oktober 2010.
Soal Latihan Pertemuan 03 Network Programming
Aplikasi dan Pemrograman Jaringan
Keywords ,Tipe Data, dan contoh Penggunaanya
Komunikasi antar Proses
TCP Socket Programmning
UDP Socket Programming
TCP Socket Programming
Transcript presentasi:

Pertemuan 3 ELEMENTARY TCP SOCKETS I Made Astawa deastawa@yahoo.com

Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa dapat: menggunakan fungsi atau system call yang berhubungan dengan sockets pada Unix, Linux, untuk membuat program aplikasi Client Server

Kasus : Merancang aplikasi Client – Server Outline Materi socket function connect function bind function listen function accept function read function write function Kasus : Merancang aplikasi Client – Server

ELEMENTARY TCP SOCKETS

ELEMENTARY TCP SOCKETS TCP/IP

ELEMENTARY TCP SOCKETS Fungsi : socket() include <sys/socket.h> int socket(int family, int type, int protocol); Fungsi socket akan mengembalikan non-negatip descriptor jika sukses, dan akan mengembalikan –1 jika ada error. Umumnya parameter protocol pada fungsi socket di set 0 (protocol yg digunakan sesuai tabel, dibawah)

ELEMENTARY TCP SOCKETS

ELEMENTARY TCP SOCKETS CONTOH : int listensd; listensd=socket(AF_INET,SOCK_STREAM,0); if(listensd == -1){ perror("error socket"); exit(1); }

ELEMENTARY TCP SOCKETS Fungsi bind() Fungsi bind() digunakan untuk memberikan alamat (IP dan Nomor Port) ke socket descriptor. #include <sys/socket.h> int bind( int listensd, const struct sockaddr *myaddr, int addrlen); Fungsi bind() mengembalikan nilai 0 jika sukses, atau -1 jika terjadi error.

ELEMENTARY TCP SOCKETS CONTOH: int tmp; struct sockaddr_in servaddr; bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(13); tmp=bind(listensd,(struct sockaddr *)&servaddr, sizeof(struct sockaddr) if(tmp == -1){ perror("error bind.."); exit(1) }

ELEMENTARY TCP SOCKETS #include <netinet/in.h> struct in_addr{ u_long s_addr; /* 32-bit netid/hostid */ /* network byte ordered */ }; struct sockaddr_in { short sin_family; /*AF_INET*/ u_short sin_port; /*16 bit port number*/ /*network byte ordered*/ struct in_addr sin_addr; char sin_zero[8]; /* unused */

ELEMENTARY TCP SOCKETS Fungsi listen() #include <sys/socket.h> int listen( int listensd, int backlog); listensd adalah TCP socket (sudah diikat / bind ke suatu address & Port) backlog adalah jumlah “incoming connections” yg disimpan dalam antrian / queue. listen() returns -1 jika terjadi error atau 0 jika sukses.

ELEMENTARY TCP SOCKETS CONTOH: #define LISTENQ 10 tmp=listen(listensd, LISTENQ); if(tmp == -1){ perror("error listen"); exit(1); }

ELEMENTARY TCP SOCKETS Fungsi accept() Setelah memanggil fungsi listen(), maka sistem operasi akan memasukkan incoming connections, ke dalam queue Handles the 3-way handshake

ELEMENTARY TCP SOCKETS Fungsi accept() #include <sys/socket.h> int accept( int listensd, struct sockaddr* cliaddr, socklen_t *addrlen); listensd adalah TCP socket yang sudah dicreate sebelumnya. cliaddr adalah pointer ke struct sockaddr_in untuk menyimpan alamat dari client yang connect dengan server addrlen = size of cliaddr Fungsi accept() mengembalikan socket baru untuk komunikasi dan nilai -1 jika error

ELEMENTARY TCP SOCKETS CONTOH: int clisize,datasd; struct sockaddr_in cliaddr; clisize = sizeof(struct sockaddr_in); datasd=accept(listensd,(struct sockaddr *) &cliaddr, &clisize); if(datasd == -1){ perror("error accept"); exit(1); }

ELEMENTARY TCP SOCKETS Fungsi Connect() Fungsi connect() digunakan oleh fungsi client untuk melakukan koneksi dengan TCP Server. #include <sys/socket.h> int connect (int sockfd, const struct sockaddr *servaddr, socklen_t addrlen); sockfd adalah TCP Socket yang sudah di-create sebelumnya. servaddr berisi address server(IP Address and TCP port number) connect() returns 0 if OK, -1 on error

ELEMENTARY TCP SOCKETS struct sockaddr_in servaddr; bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); if(inet_pton(AF_INET, “192.168.90.25”, &servaddr.sin_addr) <= 0){ printf("inet_pton error"); exit(1); } if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){ perror("connect error");

ELEMENTARY TCP SOCKETS Fungsi : read(), write() Fungsi read(), digunakan untuk menulis / mengirim data ke socket Fungsi write(), digunakan untuk membaca data dari socket Contoh: n = read(sockfd, buf, MAXLINE); Data yang dibaca disimpan pada buf, maximum data yang bisa dibaca dari socket adalah MAXLINE byte. fungsi read() mengembalikan nilai yang besarnya sama dengan jumlah byte yang dibaca. return 0 jika error

ELEMENTARY TCP SOCKETS Contoh: write(sockfd, buff, strlen(buff)); Data yang ditulis / dikirim ke socket ditempatkan pada buff fungsi write() return 0 jika terjadi error

Contoh Kasus Merancang aplikasi Client – Server (DayTimeServer dan DayTimeClient) dengan protocol TCP/IP

Contoh Kasus

DayTimeServer - TCP #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <time.h> #include <stdio.h> #define MAXLINE 100 #define LISTENQ 10 int main() { int tmp, listenfd, connfd; int sin_size; struct sockaddr_in servaddr, cliaddr; char buff[MAXLINE]; time_t ticks;

DayTimeServer - TCP //bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = INADDR_ANY; servaddr.sin_port = htons(13); memset(&(servaddr.sin_zero),'\0',8); listenfd = socket(AF_INET, SOCK_STREAM, 0); if(listenfd == -1){ perror("error socket"); exit(1); } tmp=bind(listenfd, (struct sockaddr *) &servaddr, sizeof(struct sockaddr)); if(tmp == -1){ perror("error bind..");

DayTimeServer - TCP tmp=listen(listenfd, LISTENQ); if(tmp == -1){ perror("error listen"); exit(1); } sin_size = sizeof(struct sockaddr_in); connfd=accept(listenfd,(struct sockaddr *) &cliaddr, &sin_size); if(connfd == -1){ perror("error accept"); exit(1); ticks = time(NULL); snprintf(buff,sizeof(buff),"Sekarang pukul: %.24s\r\n", ctime(&ticks)); write(connfd, buff, strlen(buff)); close(connfd); close(listenfd); } //main()

DayTimeClient - TCP #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> #define MAXLINE 100 int main(int argc, char **argv) { int sockfd, n; char recvline[MAXLINE + 1]; struct sockaddr_in servaddr; if(argc != 2){ perror("usage: client <IPaddress>"); exit(1); }

DayTimeClient - TCP if((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0){ perror("socket error"); exit(1); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(13); if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){ printf("inet_pton error for %s", argv[1]);

DayTimeClient - TCP if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0){ perror("connect error"); exit(1); } while((n=read(sockfd,recvline, MAXLINE)) > 0){ recvline[n] = 0; /* null terminate */ if(fputs(recvline,stdout)==EOF) perror("fputs error"); if(n < 0) perror("read error"); close(sockfd); return(0);

Latihan Rubahlah program DayTimeServer agar setelah koneksi dengan client terputus server ready accept() lagi, seperti gambar berikut.

Latihan