20
SOCKET PROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha

Socket Programming in C

  • Upload
    libra

  • View
    40

  • Download
    3

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Socket Programming in C

SOCKET PROGRAMMING IN CProfessor: Dr. Shu-Ching Chen

TA: Hsin-Yu Ha

Page 2: Socket Programming in C

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

Page 3: Socket Programming in C

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

Page 4: Socket Programming in C

TYPES OF SOCKET (2)

Stream sockets – connection-oriented (TCP)

Page 5: Socket Programming in C

TYPES OF SOCKET (3)

Datagram sockets- connectionless socket (UDP)

Page 6: Socket Programming in C

TCP-BASED SOCKETS

Page 7: Socket Programming in C

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);

Page 8: Socket Programming in C

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);

Page 9: Socket Programming in C

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);

Page 10: Socket Programming in C

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);

Page 11: Socket Programming in C

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);

Page 12: Socket Programming in C

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);

Page 13: Socket Programming in C

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);

Page 14: Socket Programming in C

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);

Page 15: Socket Programming in C

PRIMARY SOCKET CALLS (9)

Close() : Close connection corresponding to the socket descriptor and frees the socket descriptor.

int close(int sockfd)

Page 16: Socket Programming in C

EXAMPLE – SERVER (1)

Page 17: Socket Programming in C

EXAMPLE – SERVER (2)

Page 18: Socket Programming in C

EXAMPLE – CLIENT (1)

Page 19: Socket Programming in C

EXAMPLE – CLIENT (2)