Slide 1 : 2008/6/24 Vasantha IT1351 1
Slide 2 : 2008/6/24 Vasantha IT1351 2 A socket is a virtual connection between two applications
Using a socket, two processes can communicate with each other
The socket is the major communication tool for Internet applications
A socket is bi-directional (full-duplex) transmission
A socket can be created dynamically
Slide 3 : 2008/6/24 Vasantha IT1351 3 Network Socket as a virtual connection between two processes (physical connection) Host B Process 2 Host A Process 1 Information Hiding
Slide 4 : 2008/6/24 Vasantha IT1351 4 Socket as a client/server model
Slide 5 : 2008/6/24 Vasantha IT1351 5 What is “port”? If we do not have “ports”, what would happen? 146.163.147.81
Slide 6 : 2008/6/24 Vasantha IT1351 6 146.163.147.81
Slide 7 : 2008/6/24 Vasantha IT1351 7
Slide 8 : 2008/6/24 Vasantha IT1351 8 SERVER bind() listen() accept() read() write() close() CLIENT socket() connect() write() close() socket() read() Application Programming Interface
Slide 9 : 2008/6/24 Vasantha IT1351 9 Functions and parameter format (for server side)
(1) create socket:
socket_id = socket (AF_INET, SOCK_STREAM,IPPROTO_TCP);
(2) bind socket:
bind (socket_id, server_addr, server_len);
(3) listen to socket:
listen (socket_id, number_of_connection);
(4) accept a connection:
accept (socket_id, &client_addr, &client_len);
(5) read (receive) data:
read (socket_id, buffer, buffer_len);
(6) write (send) data:
write (socket_id, buffer, buffer_len);
(7) close socket:
close(socket_id);
Slide 10 : 2008/6/24 Vasantha IT1351 10 Functions and parameter format (for client side)
(1) create socket: same as server
socket_id = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
(2) connect socket:
connect (socket_id, serverINETaddress, server_len);
(3) write (send) data:
write (socket_id, buffer, buffer_len);
(4) read (receive) data:
read (socket_id, buffer, buffer_len);
(5) close socket: same as server
close(socket_id);
Slide 11 : 2008/6/24 Vasantha IT1351 11 “*” indicates a blocking function call. SERVER bind() listen() accept() read() CLIENT socket() connect() write() socket() * * * 1: Connection Request 2. Send a command 3. Receive the result read() We are not
doing this... *
Slide 12 : 2008/6/24 Vasantha IT1351 12 unsigned int socket_id = socket (AF_INET, SOCK_STREAM, 0);
Slide 13 : 2008/6/24 Vasantha IT1351 13 It connects a process to a specific port After bind(_) call: Port Numbers: 0~1023: System Reserved
Port 21: FTP
Port 23: telnet
Port 80: HTTP 1024 and above: available to users
Slide 14 : 2008/6/24 Vasantha IT1351 14 int status = bind (socket_id, (struct sockaddr_in *) my_addr, sizeof(my_addr));
Slide 15 : 2008/6/24 Vasantha IT1351 15 struct sockaddr_in my_addr; /* My (client) Internet address */
Slide 16 : 2008/6/24 Vasantha IT1351 16 After listen(_) call: 6500 listen (socket_id, number_of_connection);
Slide 17 : 2008/6/24 Vasantha IT1351 17 int status = listen (socket_id, 3);
Slide 18 : 2008/6/24 Vasantha IT1351 18 Step 4 - Part 1: accept( ) call After accept(_) call: 6500
Slide 19 : 2008/6/24 Vasantha IT1351 19 The accept(_) call returns another port number and establish another connection Client 7100 6500
Slide 20 : 2008/6/24 Vasantha IT1351 20 unsingned int child_sock = accept (socket_id, (struct sockaddr_in *) client_addr, sizeof (client_addr);
Slide 21 : 2008/6/24 Vasantha IT1351 21 Step 5: read( ) and write( ) call Client 7100 6500
Slide 22 : 2008/6/24 Vasantha IT1351 22 int status = recv (socket_id, in_buffer, MAX_BUFFER_SIZE, 0); Example: char in_buffer [MAX_BUFFER] On success, the number of bytes received
Slide 23 : 2008/6/24 Vasantha IT1351 23 int status = send (socket_id, out_buffer, MAX_BUFFER_SIZE, 0); On success, the number of bytes actually sent
Slide 24 : 2008/6/24 Vasantha IT1351 24 Step 6: close ( ) call Client Server 7100 6500
Slide 25 : 2008/6/24 Vasantha IT1351 25 int status = close (socket_id);
Slide 26 : 2008/6/24 Vasantha IT1351 26 Step 7: Go back to accept( ) call Client Server 6500
Slide 27 : 2008/6/24 Vasantha IT1351 27 Thank You! Queries ??? Thank U !!!