Title: Pertemuan%203%20ELEMENTARY%20TCP%20SOCKETS
1Pertemuan 3ELEMENTARY TCP SOCKETS
- Matakuliah H0483 / Network Programming
- Tahun 2005
- Versi 1.0
2Learning Outcomes
- Pada akhir pertemuan ini, diharapkan mahasiswa
- akan mampu
- menjelaskan fungsi / system call yang
berhubungan dengan Sockets pada Unix, Linux
3Outline Materi
- Socket function
- Connect function
- Bind function
- Listen function
- Accept function
- Fork and exec function
4ELEMENTARY TCP SOCKETS
- ELEMENTARY TCP SOCKETS
- Creating a passive mode (server) socket.
- Establishing an application-level connection.
- send/receive data.
- Terminating a connection.
- Creating a TCP Socket
- Function Prototype
- int socket(int family,int type,int proto)
- Contoh
5ELEMENTARY TCP SOCKETS
int sock sock socket(AF_INET,
SOCK_STREAM,0) if(sock lt 0) / ERROR /
6ELEMENTARY TCP SOCKETS
- Socket() Function
- Untuk dpt mengakses I/O Network, maka proses
harus memanggil fungsi socket() - include ltsys/socket.hgt
- 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, lihat
kuliah sebelumnya), kecuali untuk raw socket.
7ELEMENTARY TCP SOCKETS
8ELEMENTARY TCP SOCKETS
- Fungsi Connect()
- Fungsi connect() digunakan oleh fungsi client
untuk melakukan koneksi dengan TCP Server. - include ltsys/socket.hgt
- 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
9ELEMENTARY TCP SOCKETS
- Fungsi bind()
- Fungsi bind() digunakan untuk memberikan alamat
(IP dan Nomor Port) yg ada pada sockaddr
structure ke socket descriptor. - include ltsys/socket.hgt
- int bind( int sockfd,
- const struct sockaddr myaddr,
- int addrlen)
- Fungsi bind() mengembalikan nilai 0 jika sukses,
atau -1 jika terjadi error. - Contoh
10ELEMENTARY TCP SOCKETS
- Contoh
- int mysock,err
- struct sockaddr_in myaddr
- mysock socket(AF_INET,SOCK_STREAM,0)
- myaddr.sin_family AF_INET
- myaddr.sin_port htons(80)
- myaddr.sin_addr htonl(ipaddress)
- errbind(mysock, (sockaddr ) myaddr,
sizeof(myaddr))
11ELEMENTARY TCP SOCKETS
- Penggunaan fungsi bind()
- Server dapat menggunakan fungsi bind(), untuk
well known port atau specific port. - Fungsi listen()
- include ltsys/socket.hgt
- int listen( int sockfd, int backlog)
- sockfd adalah TCP socket (sudah diikat / bind ke
suatu address) - backlog adalah jumlah incoming connections yg
disimpan dalam antrian / queue. - listen() returns -1 jika terjadi error atau 0
jika sukses.
12ELEMENTARY TCP SOCKETS
- Fungsi Accept()
- Once we call listen(), the O.S. will queue
incoming connections - Handles the 3-way handshake
- Queues up multiple connections.
- When our application is ready to handle a new
connection, we need to ask the O.S. for the next
connection.
13ELEMENTARY TCP SOCKETS
- include ltsys/socket.hgt
- int accept( int sockfd,struct sockaddr cliaddr,
socklen_t addrlen) - sockfd adalah TCP socket yang sudah dicreate
sebelumnya. - cliaddr is a pointer to allocated space.
- addrlen is a value-result argument
- must be set to the size of cliaddr
14ELEMENTARY TCP SOCKETS
15ELEMENTARY TCP SOCKETS
16ELEMENTARY TCP SOCKETS
Fungsi read(), write() Contoh n read(sockfd,
buf, MAXLINE) write(sockfd, buff,
strlen(buff)) Fungsi send(), recv() Sintak
include ltsys/types.hgt include
ltsys/socket.hgt ssize_t send(int s, const void
msg, size_t len, int flags) ssize_t recv(int
s, void buf, size_t len, int flags)
17ELEMENTARY TCP SOCKETS
- send() digunakan untuk mengirim message ke
socket yang lain. - send() hanya bisa digunakan bila socket sudah
dalam mode terkoneksi dengan socket yang lainnya. - recv() digunakan untuk menerima message dari
socket yang lain. - recv() hanya bisa digunakan bila socket sudah
dalam mode terkoneksi dengan socket yang lainnya.
18ELEMENTARY TCP SOCKETS
- Fungsi sendto(), recvfrom
- Sintak
- include ltsys/types.hgt
- include ltsys/socket.hgt
- ssize_t sendto(int s, const void msg, size_t
len, int flags, const struct sockaddr to,
socklen_t tolen) - ssize_t recvfrom(int s, void buf, size_t len,
int flags, struct sock-addr from, socklen_t
fromlen) - sendto() digunakan untuk mengirim message ke
socket, - yang sudah ter-koneksi atau belum.
19ELEMENTARY TCP SOCKETS
- recvfrom() digunakan untuk menerima message dari
socket, yang sudah ter-koneksi atau belum. - Contoh Program
- Program Client Server dengan VC
- Program Climet Server pada Linux
20ltlt CLOSINGgtgt
- Kerjakan Tugas seperti yang ada di MCL