Socket Programming in C

Slides:



Advertisements
Similar presentations
Socket Programming 101 Vivek Ramachandran.
Advertisements

Introduction to Sockets Jan Why do we need sockets? Provides an abstraction for interprocess communication.
Sockets: Network IPC Internet Socket UNIX Domain Socket.
Socket Programming Application Programming Interface.
Networks: TCP/IP Socket Calls1 Elementary TCP Sockets Chapter 4 UNIX Network Programming Vol. 1, Second Ed. Stevens.
Elementary TCP Sockets Chapter 4 UNIX Network Programming Vol. 1, Second Ed. Stevens.
Socket Programming.
Sockets Basics Conectionless Protocol. Today IPC Sockets Basic functions Handed code Q & A.
Tutorial 8 Socket Programming
Programming with Berkeley Sockets Presented by Chris GauthierDickey Written by Daniel Stutzbach (I think!) for CIS 432/532 Useful References: ● man pages.
CSE/EE 461 Getting Started with Networking. Basic Concepts  A PROCESS is an executing program somewhere.  Eg, “./a.out”  A MESSAGE contains information.
Client Server Model The client machine (or the client process) makes the request for some resource or service, and the server machine (the server process)
Lecture 10 Overview. Network API Application Programming Interface – Services that provide the interface between application and protocol software often.
CS 360 – Spring 2007 Pacific University TCP section 6.5 (Read this section!) 27 Feb 2007.
UNIX Sockets COS 461 Precept 1. Clients and Servers Client program – Running on end host – Requests service – E.g., Web browser Server program – Running.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
UNIX Sockets COS 461 Precept 1.
Sockets CIS 370 Fall 2009, UMassD. Introduction  Sockets provide a simple programming interface which is consistent for processes on the same machine.
Basic Socket Programming TCP/IP overview. TCP interface Reference: –UNIX Network Programming, by Richard Stevens. –UNIX man page.
UNIX Socket Programming CS 6378
ECE 4110 – Internetwork Programming Client-Server Model.
Sockets and intro to IO multiplexing. Goals We are going to study sockets programming as means to introduce IO multiplexing problem. We will revisit socket.
Network Programming Tutorial #9 CPSC 261. A socket is one end of a virtual communication channel Provides network connectivity to any other socket anywhere.
Elementary TCP Sockets
Socket Programming. Introduction Sockets are a protocol independent method of creating a connection between processes. Sockets can be either – Connection.
CS345 Operating Systems Φροντιστήριο Άσκησης 2. Inter-process communication Exchange data among processes Methods –Signal –Pipe –Sockets.
Sockets CIS 370 Lab 10 UMass Dartmouth. Introduction 4 Sockets provide a simple programming interface which is consistent for processes on the same machine.
Server Sockets: A server socket listens on a given port Many different clients may be connecting to that port Ideally, you would like a separate file descriptor.
 Wind River Systems, Inc Chapter - 13 Network Programming.
---- IT Acumens. COM IT Acumens. COMIT Acumens. COM.
Chapter 2 Applications and Layered Architectures Sockets.
Remote Shell CS230 Project #4 Assigned : Due date :
Networking Tutorial Special Interest Group for Software Engineering Luke Rajlich.
CS 158A1 1.4 Implementing Network Software Phenomenal success of the Internet: – Computer # connected doubled every year since 1981, now approaching 200.
CPSC 441 TUTORIAL – FEB 13, 2012 TA: RUITNG ZHOU UDP REVIEW.
UNIX Sockets COS 461 Precept 1. Socket and Process Communication The interface that the OS provides to its networking subsystem application layer transport.
Introduction to Socket
CSE/EE 461 Getting Started with Networking. 2 Basic Concepts A PROCESS is an executing program somewhere. –Eg, “./a.out” A MESSAGE contains information.
Socket Programming Lab 1 1CS Computer Networks.
Socket Programming Introduction. Socket Definition A network socket is one endpoint in a two-way communication flow between two programs running over.
CS 6401 Introduction to Computer Networks 09/21/2010 Outline - UNIX sockets - A simple client-server program - Project 1 - LAN bridges and learning.
Socket Programming.
CSCI 330 UNIX and Network Programming Unit XV: Transmission Control Protocol.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
Introduction to Sockets
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
Review: – Why layer architecture? – peer entities – Protocol and service interface – Connection-oriented/connectionless service – Reliable/unreliable service.
Read() recv() connection establishment Server (connection-oriented protocol) blocks until connection from client Client socket() bind() listen() accept()
CSCI 330 UNIX and Network Programming Unit XIV: User Datagram Protocol.
Socket Programming. Computer Science, FSU2 Interprocess Communication Within a single system – Pipes, FIFOs – Message Queues – Semaphores, Shared Memory.
UNIX Sockets Outline UNIX sockets CS 640.
1 Spring Semester 2008, Dept. of Computer Science, Technion Internet Networking recitation #7 Socket Programming.
Lecture 3 TCP and UDP Sockets CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
1 Socket Interface. 2 Client-Server Architecture The client is the one who speaks first Typical client-server situations  Client and server on the same.
Sockets Intro to Network Programming. Before the internet... Early computers were entirely isolated No Internet No network No model No external communications.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
Sockets API Developing Applications using the Sockets API.
Sockets and Beginning Network Programming
CS 3700 Networks and Distributed Systems
UNIX Sockets COS 461 Precept 1.
Socket Programming in C
Tutorial on Socket Programming
Transport layer API: Socket Programming
CS 3700 Networks and Distributed Systems
UNIX Sockets Outline Homework #1 posted by end of day
TCP Sockets Programming
Advanced Network Programming spring 2007
Internet Networking recitation #8
Outline Communications in Distributed Systems Socket Programming
Sockets.
Presentation transcript:

Socket Programming in C Professor: Dr. Shu-Ching Chen TA: Samira Pouyanfar, Hector Cen

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() – The application process can send/receive messages to/from another application process (local or remote)via a socket An interface through which processes can send /receive information Socket: An interface between an application process and transport layer A well defined method of connecting two processes, defined method of connecting two processes, locally or across a network

Client-server paradigm 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. Most interprocess communication uses the client server model. These terms refer to the two processes which will be communicating with each other. One of the two processes, theclient, connects to the other process, the server, typically to make a request for information. A good analogy is a person who makes a phone call to another person. Notice that the client needs to know of the existence of and the address of the server, but the server does not need to know the address of (or even the existence of) the client prior to the connection being established. Notice also that once a connection is established, both sides can send and receive information. The system calls for establishing a connection are somewhat different for the client and the server, but both involve the basic construct of a socket. A socket is one end of an interprocess communication channel. The two processes  each establish their own socket.

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 There are two widely used socket types, stream sockets, and datagram sockets. Stream sockets treat communications as a continuous stream of characters, while datagram sockets have to read entire messages at once. Each uses its own communciations protocol. Stream sockets use TCP (Transmission Control Protocol), which is a reliable, stream oriented protocol, and datagram sockets use UDP (Unix Datagram Protocol), which is unreliable and message oriented. UDP is comm only used for streaming audio and video. UDP is only concerned with speed.

Types of socket (2) Stream sockets – connection-oriented (TCP) Connection–based sockets communicate client-server: the server waits for a connection from the client Three-way handshake Algorithm for TCP client: -Find the IP address and port number of server -Create a TCP socket -Connect the socket to server -Send-receive data with server using the socket -close the connection Algorithm for TCP server: -Bind the server socket to server IP and port number -Accept a new connection from client -Send-receive data with clientusing the client socket -close the connection with client

Types of socket (3) Datagram sockets- connectionless socket (UDP) Algorithm for TCP client: -Find the IP address and port number of server -Create a UDPsocket -Send-receive data with server using the socket -close the connection Algorithm for TCP server: -Create a UDP socket -Bind the server socket to server IP and port number -Accept a new connection from client -Send-receive data with clientusing the client socket -close the connection with client UDP user datagram protocol A datagram socket provides a symmetric data exchange interface without requiring connection establishment. Each message carries the destination address. sendto(s, buf, buflen, flags, (struct sockaddr *) &to, tolen); The s, buf, buflen, and flags parameters are the same as in connection-oriented sockets. The to and tolen values indicate the address of the intended recipient of the message. A locally detected error condition, such as an unreachable network, causes a return of -1 and errno to be set to the error number. recvfrom(s, buf, buflen, flags, (struct sockaddr *) &from, &fromlen); To receive messages on a datagram socket, recvfrom(3SOCKET) is used. Before the call, fromlen is set to the size of the from buffer. On return, fromlen is set to the size of the address from which the datagram was received.

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); The domain argument specifies the address family used in the communications domain.  Protocol Family: PF_INET or PF_UNI The type argument can be: I SOCK STREAM: Establishes a virtual circuit for stream I SOCK DGRAM: Establishes a datagram for communication I SOCK SEQPACKET: Establishes a reliable, connection based, two way communication with maximum message size. (This is not available on most machines.) protocol is usually zero, so that type defines the connection within domain. The call returns a integer identifier called a handle

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); sockfd is the socket descriptor returned by socket() – my_addr is pointer to struct sockaddr that contains information about your IP address and port – addrlen is set to sizeof(struct sockaddr) – returns -1 on error – my_addr.sin_port = 0; //choose an unused port at random – my_addr.sin_addr.s_addr = INADDR_ANY; //use my IP adr

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); listen for connections on a socket SYNOPSIS Where size it the number of pending connection requests allowed (typically limited by Unix kernels to 5).

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); Specifies the destination to form a connection with (addrPtr), and returns a 0 if successful, -1 otherwise.

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); if lenPtr or addrPtr equal zero, no address structure is returned. lenPtr is the maximum size of address structure that can be called, returns the actual value. Waits for an incoming request, and when received creates a socket for it.

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); flag is either I 0: default I MSG OOB: Out-of-band high priority communication

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); returns the number of bytes actually read into the buffer or -1 on error returns 0, the remote side has closed connection on you flags can be either I 0: default I MSG OOB: out-of-bound message I MSG PEEK: look at message without removing

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

Primary Socket Calls (9) Close() : Close connection corresponding to the socket descriptor and frees the socket descriptor. int close(int sockfd)

example – server (1) read() is equivalent to recv() with a flags parameter of 0. Other values for the flags parameter change the behaviour of recv(). Similarly, write() is equivalent to send() with flags == 0.

example – server (2) bzero function will be used to set all the socket structures with null values void bzero(void *s, int nbyte); This function does not return anything. Parameters: s: specifies string which has to be filled with null bytes.This will be a point to socket structure variable nbyte: specifies the number of bytes to be filled with null values. This will be the size of the socket structure.

example – Client (1) The bcopy function copies nbyte bytes from string s1 to the string s2. Overlapping strings are handled correctly. void bcopy(const void *s1, void *s2, int nbyte); This function does not return anything. Parameters: s1: specifies the source string. s2: specifies the destination string. nbyte: specifies the number of bytes to be copied.

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