S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
-
Upload
derick-harris -
Category
Documents
-
view
213 -
download
1
Transcript of S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
SOCKET PROGRAMMING IN CProfessor: Dr. Shu-Ching Chen
TA: Hsin-Yu Ha
WHAT IS SOCKET?
An interface between an application process An Application Programming Interface (API)
used for InterProcess Communications (IPC) It can also be called as Berkeley Socket or
BSD Socket
TYPES OF SOCKET (1)
Address domain Unix domain : address format is Unix pathname Internet domain : address format is host and port
number
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)
TCP-BASED SOCKETS
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