S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
-
Upload
barrie-ward -
Category
Documents
-
view
219 -
download
0
Transcript of S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
SOCKET PROGRAMMING IN CProfessor: Dr. Shu-Ching Chen
TA: HsinYu Ha
WHAT IS SOCKET?
An interface between application processes An Application Programming Interface (API)
used for InterProcess Communications (IPC) Sockets bound to some IP and port number The socket library provides various system
callsExamples: socket(), bind(), listen(), connect(), accept(),send(), recv(), close()
CLIENT-SERVER PARADIGM
Client: initiates contact with
server (“speaks first”) typically requests service from server, For Web, client is
implemented in browser; Server:
provides requested service to client
typically requests service from server,
e.g., Web server sends requested Web page.
TYPES OF SOCKET (1)
Two types of internet Sockets Stream sockets SOCK_STREAM
Connection oriented Rely on TCP to provide reliable two-way connected
communication Datagram sockets SOCK_DGRAM
Rely on UDP Connection is unreliable
TYPES OF SOCKET (2)
Stream sockets – connection-oriented (TCP)
TYPES OF SOCKET (3)
Datagram sockets- connectionless socket (UDP)
PRIMARY SOCKET CALLS (1)
Socket() : Returns a file descriptor(socket ID) if successful, -1 otherwise.
Arguments Domain: set to AF_INET Type:
SOCK_STREAM SOCK_DGRAM SOCK_SEQPACKET
Protocol: If it is set as zero, then socket will choose the correct protocol based on type.
int socket(int domain, int type, int protocol);
PRIMARY SOCKET CALLS (2)
Bind() : Associate a socket id with an address to which other processes can connect.
Arguments Sockfd: It is the socket id My_addr: a pointer to the address family
dependent address structure Addrlen: It is the size of *my_addr
int bind(int sockfd, struct sockaddr *my_addr, int addrlen);
PRIMARY SOCKET CALLS (3)
Listen() : Return 0 on success, or –1 if failure Arguments
Sockfd: It is socket id created by socket() Backlog : It is used to constraint the number of
connection
int listen(int sockfd, int backlog);
PRIMARY SOCKET CALLS (4)
Connect() : connect to a remote host Arguments
Sockfd: It is the socket descriptor returned by socket()
serv_addr : It is a pointer to to struct sockaddr that contains information on
destination IP address and port Addrlen: It is set to sizeof(struct sockaddr)
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
PRIMARY SOCKET CALLS (5)
Accept() : gets the pending connection on the port you are listen()ing on.
Arguments Sockfd: It is the same socket id used by listen() Addr: It is a pointer to a local struct sockaddr
which stores the information about incoming connection
Addrlen: It is set to sizeof(struct sockaddr_in)
int accept(int sockfd, struct sockaddr *addr, int *addrlen);
PRIMARY SOCKET CALLS (6)
Send() : Send a message. Returns the number of bytes sent or -1 if failure.
Arguments Sockfd: It is the same socket id used by socket()
or accept() msg: It is the pointer to the data you want to
send Len: data length is sizeof(msg) Flags : It is set to be zero
int send(int sockfd, const void *msg, int len, int flags);
PRIMARY SOCKET CALLS (7)
recv() : Receive up to len bytes in buf. Returns the number of bytes received or -1 on failure.
Arguments Sockfd: It is the socket descriptor to read from buf: It is the buffer to read the information info Len: It is the maximum length of the buffer Flags : It is set to be zero
int recv(int sockfd, void *buf, int len, unsigned int flags);
PRIMARY SOCKET CALLS (8)
shutdown() : disable sending or receiving based on the value how.
Arguments Sockfd How
Set it to 0 will disable receiving Set it to 1 will disable sending Set it to 2 will disable both sending and receiving
int shutdown(int sockfd, int how);
PRIMARY SOCKET CALLS (9)
Close() : Close connection corresponding to the socket descriptor and frees the socket descriptor.
int close(int sockfd)
EXAMPLE – SERVER (1)
EXAMPLE – SERVER (2)
EXAMPLE – CLIENT (1)
EXAMPLE – CLIENT (2)
REFERENCE http://home.iitk.ac.in/~chebrolu/ee673-f06/sockets.pdf ftp://
ftp.sas.com/techsup/download/SASC/share5958-59/S5958v2.pdf
http://www.slideshare.net/jignesh/socket-programming-tutorial
http://www.rites.uic.edu/~solworth/sockets.pdf Beej's Guide to Network Programming Using Internet
Sockets http://beej.us/guide/bgnet/output/html/multipage/index.html
Sockets Tutorial http://www.linuxhowtos.org/C_C++/socket.htm