Socket Programming Based on tutorial prepared by EUISOK CHUNG CS3320 Spring2008.

Slides:



Advertisements
Similar presentations
Introduction to Sockets Jan Why do we need sockets? Provides an abstraction for interprocess communication.
Advertisements

Socket Programming CS3320 Fall 2010.
Socket Programming Application Programming Interface.
1 Socket Programming r What is a socket? r Using sockets m Types (Protocols) m Associated functions m Styles m We will look at using sockets in C.
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.
1 Netcomm Recitation 1: Sockets Communication Networks Recitation 1.
1 Netcomm Sockets Communication Networks Recitation 1.
1 Socket Interfaces Professor Jinhua Guo CIS527 Fall 2003.
Tutorial 8 Socket Programming
UDP: User Datagram Protocol. UDP: User Datagram Protocol [RFC 768] r “bare bones”, “best effort” transport protocol r connectionless: m no handshaking.
CS 311 – Lecture 18 Outline IPC via Sockets – Server side socket() bind() accept() listen() – Client side connect() Lecture 181CS Operating Systems.
Introduction to Socket Programming April What is a socket? An interface between application and network –The application creates a socket –The socket.
Socket Addresses. Domains Internet domains –familiar with these Unix domains –for processes communicating on the same hosts –not sure of widespread use.
CSE/EE 461 Getting Started with Networking. Basic Concepts  A PROCESS is an executing program somewhere.  Eg, “./a.out”  A MESSAGE contains information.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
1 Socket Programming r What is a socket? r Using sockets m Types (Protocols) m Associated functions m Styles.
CPSC 441 TUTORIAL – JANUARY 18, 2012 TA: MARYAM ELAHI INTRODUCTION TO SOCKET PROGRAMMING WITH C.
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
ECE 4110 – Internetwork Programming Client-Server Model.
TCP/IP Protocol Stack IP Device Drivers TCPUDP Application Sockets (Gate to network) TCP: –Establish connection –Maintain connection during the communication.
Operating Systems Chapter 9 Distributed Communication.
CS345 Operating Systems Φροντιστήριο Άσκησης 2. Inter-process communication Exchange data among processes Methods –Signal –Pipe –Sockets.
9/12/2015B.R1 Socket Abstraction and Interprocess Communication B.Ramamurthy CSE421.
Sirak Kaewjamnong Computer Network Systems
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.
Chapter 2 Applications and Layered Architectures Sockets.
1 Socket Programming r What is a socket? r Using sockets m Types (Protocols) m Associated functions m Styles m We will look at using sockets in C.
CS x760 Computer Networks1 Socket Programming. CS 6760 Computer Networks2 Socket Programming  What is a socket?  Using sockets  Types (Protocols) ‏
Remote Shell CS230 Project #4 Assigned : Due date :
Computer Networks : TP1 Prof. Dr. Amine Berqia and Prof. Dr. Fernando Lobo {bamine,
1 Introduction to Computer Networks Ilam University By: Dr. Mozafar Bag Mohammadi Sockets.
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.
1 Computer Networks An Introduction to Computer Networks University of Tehran Dept. of EE and Computer Engineering By: Dr. Nasser Yazdani Lecture 3: Sockets.
TELE202 Lecture 15 Socket programming 1 Lecturer Dr Z. Huang Overview ¥Last Lecture »TCP/UDP (2) »Source: chapter 17 ¥This Lecture »Socket programming.
University of Calgary – CPSC 441.  A socket is an interface between the application and the network (the lower levels of the protocol stack)  The application.
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.
CS 6401 Introduction to Computer Networks 09/21/2010 Outline - UNIX sockets - A simple client-server program - Project 1 - LAN bridges and learning.
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.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
CSCI 330 UNIX and Network Programming Unit XIV: User Datagram Protocol.
UNIX Sockets Outline UNIX sockets CS 640.
1 Spring Semester 2008, Dept. of Computer Science, Technion Internet Networking recitation #7 Socket Programming.
1 TCP Sockets Programming Creating a passive mode (server) socket.Creating a passive mode (server) socket. Establishing an application-level connection.Establishing.
Lecture 3 TCP and UDP Sockets CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
Socket Programming(1/2). Outline  1. Introduction to Network Programming  2. Network Architecture – Client/Server Model  3. TCP Socket Programming.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
Netprog: TCP Sockets1 TCP Sockets Programming Creating a passive mode (server) socket.Creating a passive mode (server) socket. Establishing an application-level.
CSCE 313 Network Socket MP8 DUE: FRI MAY 5, 2017
Sockets and Beginning Network Programming
Week 13 - Friday CS222.
Socket Programming in C
Socket Interface 1 Introduction 11 Socket address formats 2 API 12 13
Transport layer API: Socket Programming
Socket Programming What is a socket? Using sockets Types (Protocols)
Socket Programming in C
TCP Sockets Programming
Socket Programming What is a socket? Using sockets Types (Protocols)
Socket Programming(1/2)
Socket Programming What is a socket? Using sockets Types (Protocols)
Sockets Programming Socket to me!.
Sockets Programming Socket to me!.
Internet Networking recitation #8
Socket Programming What is a socket? Using sockets Types (Protocols)
Presentation transcript:

Socket Programming Based on tutorial prepared by EUISOK CHUNG CS3320 Spring2008

Contents  What is Socket?  Socket Programming API(C language) Socket Bind, Listen Accept Connect Send, Recv Close  Example

What is a socket?  An interface between application and network The application creates a socket The socket type dictates the style of communication  reliable vs. best effort  connection-oriented vs. connectionless  Once configured, the application can pass data to the socket for network transmission receive data from the socket (transmitted through the network by some other host)

Why do we need them?  Build distributed, client server applications Application ’ s capabilities are distributed on multiple machines Typical examples are information systems  Database is located on a more powerful machine (server)  GUI is on the less powerful machine (client) This architecture is old, from the time when hardware was very expensive  Think: James Bond films from 1960s, where the computer took up the whole room … Today, there are interesting research projects on how to build better distributed systems  At UTD:  Grid computing (Dr. Yen)  Agent based systems (Dr. Mili)

Two essential types of sockets  SOCK_STREAM TCP sockets reliable delivery in-order guaranteed connection-oriented  SOCK_DGRAM UDP sockets unreliable delivery no order guarantees no notion of “ connection ” App socket Dest. App socket D1 D3 D2 We’ll look a t this one

Socket Creation

Socket Creation in C: socket  int s = socket(domain, type, protocol); where s: socket descriptor, an integer (like a file-handle) domain: integer, communication domain  e.g., AF_INET (IPv4 protocol)  Note. We ’ ll use AF_INET type: communication type  SOCK_STREAM: reliable, 2-way, connection-based service  SOCK_DGRAM: unreliable, connectionless  Note. We ’ ll use SOCK_STREAM protocol: e.g., TCP or UDP  use IPPROTO_TCP or IPPROTO_UDP to send/receive TCP or UDP packets  Note. We ’ ll use IPPROTO_TCP

Socket Creation in C: socket /* sample code to create a socket */ hSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

Binds a socket to an address

Addresses, Ports and Sockets  Like apartments and mailboxes You are the application Street address of your apartment building is the IP address Your mailbox is the port The post-office is the network The socket is the key that gives you access to the right mailbox  Q: How do you choose which port a socket connects to?

Addresses, Ports and Sockets  Choose a port number that is registered for general use, from 1024 to Do not use ports 1 to These ports are reserved for use by the Internet Assigned Numbers Authority (IANA) Avoid using ports through These are dynamic ports that operating systems use randomly. If you choose one of these ports, you risk a potential port conflict

The bind function  associates a port for use by the socket  int status = bind(sock, &addrport, size) where status: return status, 0 if successful, -1 otherwise sock: socket being used addrport: address structure  This C structure has four parts to it (next slide) size: the size (in bytes) of the addrport structure Bind is non-blocking: returns immediately

The struct sockaddr  The sockaddr_in structure has four parts: sin_family: address family (e.g., AF_INET IP addresses) sin_port: port number sin_addr: IP-address sin_zero: // un-used

Example(Server) // first, create and fill in values for the sockaddr_in structure Address struct sockaddr_in Address; /* create Address stucture */ Address.sin_family = AF_INET; /* AF_INET represents the address family INET for Internet sockets. */ Address.sin_port = htons(nHostPort); /* The function htons() converts from host byte order to network byte order*/ Address.sin_addr.s_addr = INADDR_ANY; /* INADDR_ANY allows us to work without knowing the IP address of the machine the client program is running on (very convenient) */ // next, bind the socket to the port if( bind(hServerSocket, (struct sockaddr *) &Address, sizeof(Address)) == -1) { printf("\nCould not connect to host\n"); return -1; } Some computers put the most significant byte within a word first (this is called “big-endian” order), and others p ut it last (“little-endian” order). So that machines with different byte order conventions c an communicate, the Internet protocols specify a byte ord er convention for data transmitted over the network. This is known as network byte order (it is big-endian). (struct sockaddr *) &Address ?

Connection setup

Connection Setup  A connection occurs between two kinds of participants Passive  waits for an active participant to request connection Active  initiates connection request to passive side  Once connection is established, passive and active participants can: both can send & receive data either can terminate the connection

Connection setup cont ’ d Passive participant (e.g., our server) step 1: listen (for incoming requests) step 3: accept (a request) step 4: data transfer  The accepted connection is on a new socket connection need to create another socket  The old socket continues to listen for other active participants Active participant (e.g., our client) step 2: request & establish connection step 4: data transfer Passive Participant l-socka-sock-1a-sock-2 Active 1 socket Active 2 socket

Connection setup: listen & accept  The listen function prepares a bound socket to accept incoming connections  int status = listen(sock, queuelen) where status: return value, 0 if listening, -1 if error sock: socket being used queuelen: number of active participants that can “ wait ” for a connection listen is non-blocking: returns immediately  Example code: if (listen(hServerSocket, 1) == -1) { printf("\nCould not listen\n"); return -1; }

Connection setup: listen & accept  Use the accept function to accept a connection request from a remote host  The function returns a socket corresponding to the accepted connection  int s = accept(sock, &cliaddr, &addrlen) where s: new socket used for data-transfer sock: original socket being listened on (e.g., server) cliaddr: address structure of the active participant (e.g., client)  The accept function updates/returns the sockaddr structure with the client's address information addrlen: size (in bytes) of the client sockaddr structure  The accept function updates/returns this value accept is blocking: waits for connection before returning  Example code: hSocket = accept(hServerSocket, (struct sockaddr *) &Address, (socklen_t *) &nAddressSize); /* socklen_t is socket address length type, defined in sys/socket.h; in our example code it is being cast from a pointer to an integer */

Client create socket and connect to remote host  First, the client must create a socket (socket call as before) and fills in its address structure  Then, the client connects to the remote host The connect function is used by a client program to establish communication with a remote entity  int status = connect(sock, &servaddr, addrlen); where status: return value, 0 if successful connect, -1 otherwise sock: client’s socket to be used in connection servaddr: server’s address structure addrlen: size (in bytes) of the servaddr structure connect is blocking  Example code: if(connect(hSocket, (struct sockaddr*) &Address, sizeof(Address)) == -1) { printf("\nCould not connect to host\n"); }

Sending/Receiving Data

 Send data  int count = send(sock, &buf, len, flags); Where: count: number of bytes transmitted (-1 if error) sock: socket being used buf: buffer to be transmitted len: length of buffer (in bytes) to transmit flags: special options, usually just 0  Receive data  int count = recv(sock, &buf, len, flags); Where: count: number of bytes received (-1 if error) sock: socket being used buf: stores received bytes len: number of bytes received flags: special options, usually just 0

Example (Client/Server) … // write a message to the server n = send(sock,buffer,strlen(buffer),0); // do some processing … // read a message from the server n = recv(sock,buffer,255,0); // after the client executed a write(), it will read n = recv(newsock,buffer,255,0); // do some processing … // send the result to the client n = send(newsock,resp_msg,strlen(resp_msg),0); CLIENTSERVER

close  When finished using a socket, the socket should be closed:  status = close(s); status: return value, 0 if successful, -1 if error s: the file descriptor (socket being closed)

Compile and run?  Need some additional options to compile the client and the server gcc -o server server.c -lsocket -lnsl gcc -o client client.c -lsocket -lnsl  Run the server first, then the client after  For example: server 4444 // run this on cs1 client cs1.utdallas.edu 4444 // run this on cs2

Summary

Sample questions Draw a flowchart or activity diagram for a server. Identify the major steps (e.g., create socket, listen, accept, etc.) Draw a flowchart or activity diagram for a client. Identify the major steps (e.g., create socket, listen, accept, etc.) In our example, why does the server need to start executing before a client? Given the source code examples for the client and the server in Tutorial 5b, identify each block of statements that accomplish the major steps (e.g., create socket, listen, accept, etc.) Notes. Use the sample code provided in tutorial 5b; you are not required to write the client or server from scratch in this course (assignment or final) - For assignment 5, socket question: use your own fibonacci code You should be able to read the code and know the purpose for the statements You do not need to know the details of every function used