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

Socket Programming in C

Jan 01, 2016

Download

Documents

kiona-dotson

Socket Programming in C. Professor: Dr. Shu-Ching Chen TA: Hsin -Yu 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 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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 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: Socket Programming in C

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: Socket Programming in C

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: Socket Programming in C

TYPES OF SOCKET (2)

Stream sockets – connection-oriented (TCP)

Page 6: Socket Programming in C

TYPES OF SOCKET (3)

Datagram sockets- connectionless socket (UDP)

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)