210 likes | 375 Views
Socket Programming in C. Professor: 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.
E N D
Socket Programming in C Professor: 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)
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(intsockfd, structsockaddr *my_addr, intaddrlen);
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 tostructsockaddr that contains information on destination IP address and port • Addrlen: It is set to sizeof(structsockaddr) int connect(intsockfd, structsockaddr *serv_addr, intaddrlen);
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 structsockaddr which stores the information about incoming connection • Addrlen: It is set to sizeof(structsockaddr_in) int accept(intsockfd, structsockaddr *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(intsockfd, const void *msg, intlen, 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 intrecv(intsockfd, void *buf, intlen, 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(intsockfd, inthow);
Primary Socket Calls (9) • Close() : Close connection corresponding to the socket descriptor and frees the socket descriptor. int close(intsockfd)
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