Professional Documents
Culture Documents
Socket Prog
Socket Prog
Socket programming
Goal: learn how to build client/server application that
communicate using sockets
Socket Programming 1
Socket types
Application program
Stream Datagram
socket socket
interface interface Raw
(SOCK_STREAM) (SOCK_DGRAM) socket
interface
TCP UDP (SOCK_RAW)
IP
Socket Programming 2
1
COSC 4377, Spring 2001 - Socket Programming 1/29/01
Socket Functions
Server: create endpoint socket()
bind address bind()
specify queue listen()
wait for connection accept()
Client: create endpoint socket()
bind address bind()
connect to server connect()
transfer data read()
write()
recv()
send()
datagrams recvfrom()
sendto()
terminate close()
shutdown()
Socket Programming 3
listen (...)
Client
socket (...) Repeat infinitely
(1) Connection request
connect (...)
accept (...)
fork (...)
close close
Repeat (listening) (accepting)
as needed
Repeat Parent server
write (...) (2) request as needed
read (...)
close
(accepting)
close (...)
Child server Socket Programming 4
2
COSC 4377, Spring 2001 - Socket Programming 1/29/01
Repeat
as needed Repeat infinitely
(1) Requests
sendto (...)
recvfrom (...)
Process
sendto (...)
(2) Responses
recvfrom (...)
Socket Programming 5
Socket Addresses
Defined in <sys/socket.h>:
struct sockaddr {
u_short sa_family; /* address family: AF_xxx value */
char sa_data[14]; /* up to 14 bytes of protocol-spec addr */
};
Defined in <netinet/in.h>:
struct in_addr {
u_long s_addr; /* 32-bit netid/hostid */
};
struct sockaddr_in {
short sin_family; /* AF_INET */
u_short sin_port; /* 16-bit port number */
struct in_addr; /* 32-bit netid/hostid */
char sin_zero[8]; /* unused */
};
3
COSC 4377, Spring 2001 - Socket Programming 1/29/01
Socket Programming 7
controlled by
controlled by process application
application process
developer
developer socket socket
TCP with controlled by
controlled by TCP with
buffers, operating
operating buffers, internet variables system
system variables
host or host or
server server
Socket Programming 8
4
COSC 4377, Spring 2001 - Socket Programming 1/29/01
Socket Programming 9
5
COSC 4377, Spring 2001 - Socket Programming 1/29/01
Socket Programming 12
6
COSC 4377, Spring 2001 - Socket Programming 1/29/01
Socket Programming 14
7
COSC 4377, Spring 2001 - Socket Programming 1/29/01
close(sd);
} /* main */
Socket Programming 15
Socket Programming 16
8
COSC 4377, Spring 2001 - Socket Programming 1/29/01
Socket Programming 17
9
COSC 4377, Spring 2001 - Socket Programming 1/29/01
10