S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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

Transcript of S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

Page 1: 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

Page 2: S OCKET P ROGRAMMING IN C Professor: 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()

Page 3: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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.

Page 4: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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

Page 5: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

TYPES OF SOCKET (2)

Stream sockets – connection-oriented (TCP)

Page 6: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

TYPES OF SOCKET (3)

Datagram sockets- connectionless socket (UDP)

Page 7: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

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: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

PRIMARY SOCKET CALLS (9)

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

int close(int sockfd)

Page 16: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

EXAMPLE – SERVER (1)

Page 17: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

EXAMPLE – SERVER (2)

Page 18: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

EXAMPLE – CLIENT (1)

Page 19: S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.

EXAMPLE – CLIENT (2)