Docstoc

Socket Programming in C

Document Sample
Socket Programming in C Powered By Docstoc
					SOCKET PROGRAMMING IN C
Professor: Dr. Shu-Ching Chen
TA: Yimin Yang
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 calls

  Examples: 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)

        int socket(int domain, int type, int protocol);
 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.
PRIMARY SOCKET CALLS (2)
int bind(int sockfd, struct sockaddr *my_addr, int addrlen);


 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
PRIMARY SOCKET CALLS (3)
           int listen(int sockfd, int backlog);

 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
PRIMARY SOCKET CALLS (4)
    int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);


 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)
PRIMARY SOCKET CALLS (5)
    int accept(int sockfd, struct sockaddr *addr, int *addrlen);


 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)
PRIMARY SOCKET CALLS (6)
    int send(int sockfd, const void *msg, int len, int flags);


 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
PRIMARY SOCKET CALLS (7)
    int recv(int sockfd, void *buf, int len, unsigned int flags);


 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
PRIMARY SOCKET CALLS (8)
                 int shutdown(int sockfd, int how);


 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
PRIMARY SOCKET CALLS (9)
                   int close(int sockfd)


   Close() : Close connection corresponding to the
    socket descriptor and frees the socket descriptor.
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

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:6
posted:5/3/2013
language:
pages:20