Introduction to Network Programming (v1.3) Speaker: Frank Posluszny

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.
CS3516 (B10) HELP Session 2 Presented by Lei Cao.
CS3516 B10 Help Session 1 CS3516 — TCP/IP Socket Programming Presented by Can (John) Tatar.
Sockets Programming CS144 Review Session 1 April 4, 2008 Ben Nham.
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: a Primer Socket to me!. Feb. 23, 2001EE122, UCB2 Why does one need sockets? application network protocol sockets network.
1 Socket Interfaces Professor Jinhua Guo CIS527 Fall 2003.
CS4514 B05 HELP Session 1 CS4514 – TCP/IP Socket Programming Presented by Feng Li
Programming with Berkeley Sockets Presented by Chris GauthierDickey Written by Daniel Stutzbach (I think!) for CIS 432/532 Useful References: ● man pages.
Ken French HELP Session 1 CS4514. CS4514 We expect that you have had a programming course similar to 2005 before coming into this class. Programs will.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
Basic Socket Programming TCP/IP overview. TCP interface Reference: –UNIX Network Programming, by Richard Stevens. –UNIX man page.
CPSC 441 TUTORIAL – JANUARY 18, 2012 TA: MARYAM ELAHI INTRODUCTION TO SOCKET PROGRAMMING WITH C.
Socket Programming References: redKlyde ’ s tutorial set Winsock2 for games (gamedev.net)
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.
TCP/IP Protocol Stack IP Device Drivers TCPUDP Application Sockets (Gate to network) TCP: –Establish connection –Maintain connection during the communication.
Assignment 3 A Client/Server Application: Chatroom.
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.
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.
Lab #1: Network Programming using Sockets By J. H. Wang Nov. 28, 2011.
Remote Shell CS230 Project #4 Assigned : Due date :
Socket Programming Lec 2 Rishi Kant. Review of Socket programming Decide which type of socket – stream or datagram. Based on type create socket using.
Networking Tutorial Special Interest Group for Software Engineering Luke Rajlich.
Cli/Serv.: sockets 3/91 Client/Server Distributed Systems v Objectives –describe iterative clients and servers using the UDP protocol ,
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
Socket Programming Lab 1 1CS Computer Networks.
Sockets Socket = abstraction of the port concept: –Application programs request that the operating system create a socket when one is needed –O.S. returns.
Chapter 2 Applications and Layered Architectures Sockets.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
Intro to Socket Programming CS 360. Page 2 CS 360, WSU Vancouver Two views: Server vs. Client Servers LISTEN for a connection and respond when one is.
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.
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 Socket Interface. 2 Client-Server Architecture The client is the one who speaks first Typical client-server situations  Client and server on the same.
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.
SOCKET PROGRAMMING Presented By : Divya Sharma.
Socket Abstraction and Interprocess Communication
Assignment 3 A Client/Server Application: Chatroom
Sockets and Beginning Network Programming
UNIX Sockets COS 461 Precept 1.
CS 1652 Jack Lange University of Pittsburgh
Socket Programming in C
Review: TCP Client-Server Interaction
Transport layer API: Socket Programming
Introduction to Network Programming Speaker: Jae Chung
UNIX Sockets Outline Homework #1 posted by end of day
Socket Abstraction and Interprocess Communication
Berkeley API Socket Programming
Socket Programming in C
Berkeley API Socket Programming
Introduction to Network Programming (v1.2) Speaker: Mingzhe Li
CS4514 (C04) HELP Session 1 Introduction to Network Programming (v1.4)
Socket Abstraction and Interprocess Communication
Socket Abstraction and Interprocess Communication
Socket Abstraction and Interprocess Communication
Socket Abstraction and Interprocess Communication
Socket Abstraction and Interprocess Communication
CS3516 — TCP/IP Socket Programming
Socket Programming(1/2)
Socket Programming Neil Tang 09/08/2008
Berkeley API Socket Programming
Sockets.
Presentation transcript:

Introduction to Network Programming (v1.3) Speaker: Frank Posluszny CS4514 (C04) HELP Session 1 Introduction to Network Programming (v1.3) Speaker: Frank Posluszny

Outline Project 1 Overview Unix Network Programming Project Turnin Client Server Communication with netoracle Project Turnin How to find help Additional suggestions / tips 2/19/2019 WPI

CS4514 Project1 Your programs should compile and work on ccc.wpi.edu computers, which are running Linux. Netoracle is running on ccc3.wpi.edu only. Programs should be written in C or C++ If your program is developed on another platform or machine, you should test the software on ccc before turning in the assignment. Make sure you have the correct #include in your program. We have registered a couple of services in oracle that can be used to debug your client. 2/19/2019 WPI

Project 1 Communication Model Client Server (3) Connect One Service TCP UDP UDP (2) list (1) register Oracle DNS 2/19/2019 WPI

Project 1 missions (in handout) Client: Wait on user’s commands. List all services registered on netoracle. Connect to service using the transport address returned from netoracle. Server: Register service to netoracle. Wait for connections and provide service. 2/19/2019 WPI

UDP Transmission (Client) Stevens (Page 212) Connectionless Specify transport address every time you send/recv data Unreliable Protocol Data lost, bit errors Stevens (Page 216) Simple UDP echo client Lenon page78 (robust) socket() sendto() recvfrom() close() 2/19/2019 WPI

Example: UDP Client struct hostent *hp; /* /usr/include/netdb.h */ struct sockaddr_in server; /* /usr/include/netinet/in.h */ int sd, lserver = sizeof( server ); /* prepare a socket */ if ( (sd = socket( AF_INET, SOCK_DGRAM, 0 )) < 0 ) { perror( strerror(errno) ); exit(-1); } 2/19/2019 WPI

Example: UDP Client (Continued) /* prepare server address */ bzero( (char*)&server, sizeof(server) ); server.sin_family = AF_INET; server.sin_port = htons( SERVER_PORT ); //endian convert if ( (hp = gethostbyname(SERVER_NAME)) == NULL) { perror( strerror(errno) ); exit(-1); } bcopy( hp->h_addr, (char*)&server.sin_addr, hp->h_length); 2/19/2019 WPI

Example: UDP Client (Continued) /* prepare your message */ … /* send/receive data */ sendto( sd, sBuf, data_size, 0, (struct sockaddr*)&server, lserver ); recvfrom( sd, rBuf, MAXLEN, 0, (struct sockaddr*)&server, &lserver ); /* close socket */ close( sd ); 2/19/2019 WPI

TCP Connection (Client) Stevens (Page 86) Connection Oriented Specify transport address once at connection Use File Operations read() / write() Reliable Protocol socket() connect() read() / write() send() / recv() close() 2/19/2019 WPI

Example: TCP Client int sd; struct hostent *hp; /* /usr/include/netdb.h */ struct sockaddr_in server; /* /usr/include/netinet/in.h */ /* prepare a socket */ if ( (sd = socket( AF_INET, SOCK_STREAM, 0 )) < 0 ) { perror( strerror(errno) ); exit(-1); } 2/19/2019 WPI

Example: TCP Client (Continued) /* prepare server address */ bzero( (char*)&server, sizeof(server) ); server.sin_family = AF_INET; server.sin_port = htons( SERVER_PORT ); if ( (hp = gethostbyname(SERVER_NAME)) == NULL) { perror( strerror(errno) ); exit(-1); } bcopy( hp->h_addr, (char*)&server.sin_addr, hp->h_length); 2/19/2019 WPI

Example: TCP Client (Continued) /* connect to the server */ if (connect( sd, (struct sockaddr*) &server, sizeof(server) ) < 0 ) { perror( strerror(errno) ); exit(-1); } /* send/receive data */ while (1) { read/write(); /* close socket */ close( sd ); 2/19/2019 WPI

When to read() Your client needs to take input from both the network and stdin How to tell when to do which one? Use the select() function! 2/19/2019 WPI

TCP Connection (Server) socket() Stevens (Page 86) Bind transport address to socket Listen to the socket Accept connection on a new socket bind() listen() accept() read()/write() close() 2/19/2019 WPI

Example: TCP Server int sd, nsd; struct sockaddr_in server; /* /usr/include/netinet/in.h */ sd = socket( AF_INET, SOCK_STREAM, 0 ); bzero( (char*)&server, sizeof(server) ); server.sin_family = AF_INET; server.sin_port = htons( YOUR_SERVER_PORT ); server.sin_addr.s_addr = htonl( INADDR_ANY ); 2/19/2019 WPI

Example: TCP Server (Continued) bind( sd, (struct sockaddr*) &server, sizeof(server) ); listen( sd, backlog ); while (1) { nsd = accept( sd, (struct sockaddr *) &client, sizeof(client) ); read()/write(); close( nsd ); } close( sd ); 2/19/2019 WPI

Oracle Commands enum cmd { }; cmdErr, /* An error occurred. See sbDesc for details */ cmdGet, /* Get the address of a service */ cmdAckGet, /* ACK for cmdGet message */ cmdEnd, /* Last response to a cmdGet message */ cmdPut, /* Register a new service */ cmdAckPut, /* ACK for cmdPut message */ cmdClr, /* Unregister a service */ cmdAckClr /* ACK for cmdClr message */ }; 2/19/2019 WPI

Oracle Commands (om struct) Clear a service: serv.ver = verCur; serv.cmd = cmdClr; serv.uid = ?; serv.sbServ = ?; Find a service: serv.ver = verCur; serv.cmd = cmdGet; serv.uid = ?; serv.sbServ = ?; Register a service: serv.cmd = cmdPut; serv.sbDesc = ?; serv.sa = ? 2/19/2019 WPI

Oracle Communication Example int sd; struct sockaddr_in sa; // you can use gethostbyname() and // getservbyname() to get sa in your project. struct om sendMsg, recvMsg; size_t lom = sizeof(struct om); sendMsg.ver = verCur; sendMsg.cmd = cmdGet; sendto( sd, (void *)&sendMsg, lom, 0, (struct sockaddr *) &sa, lsa ); recvfrom( sd, (void *)&recvMsg, lom, 0, (struct sockaddr *) &sa, &lsa ); // you can also use connect()/send()/recv() for UDP connection, for more // information -- use “man connect”, “man send” and “man recv” 2/19/2019 WPI

Turnin Your Files Turnin Command Create a directory to hold your files: mkdir proj1 Copy all files in the current directory to your new directory: cp * proj1 Create a single, compressed archive file containing all of the files in your new directory: tar -czf proj1.tgz proj1 Submit the archive file: /cs/bin/turnin submit cs4514 proj1 proj1.tgz 2/19/2019 WPI

Turnin Your Files (Continued) Files should include All source code (including a Makefile) A documentation file (include your compile command if you don’t offer a Makefile) A result script showing the running result Any custom include files that you used, including oracle.h if you have not used #include “/cs/cs4514/pub/lib/oracle.h” 2/19/2019 WPI

HELP Bring printouts to office hours. Email TA’s (cs4514-ta@cs.wpi.edu) with questions. You CAN email a specific TA or SA, but do not expect immediate results, better to use the TA mailing list. We do have a class mailing list that could be used as a last resort. 2/19/2019 WPI

Some Useful System Calls Gethostbyname: map hostname to IP addr struct hostent *gethostbyname( char *name ) Getservbyname: look up service name given struct servent *getservbyname( const char *servname, const char *protocol ) Gethostname: get own hostname int gethostname( char *name, size_t len ) Getsockname: map sd to socket addr int getsockname( int sd, struct sockaddr *sa, size_t *lsa ) 2/19/2019 WPI

UNIX Programming Some functions that you may need: bind listen accept select sendto/send recvfrom/recv gethostbyname getservbyname gethostname getsockname fork strlen, strtok 2/19/2019 WPI

Other resources > man sendto Use man pages for help on a particular command or function (Give the section number). > man sendto > man 2 bind //show bind(2) Internet: Beej's Guide to Network Programming http://www.ecst.csuchico.edu/~beej/guide/net/ 2/19/2019 WPI

UNIX Debugging GDB -- GNU Project Debugger Compile program with –g flag g++ -g –o program program.cc gcc –g –o program program.c gdb program {core} set args (command arguments) run, where, list, step, break continue inspect, help, quit Can examine specific data in program 2/19/2019 WPI

UNIX Debugging (Continued) There are many more options use “help” to learn more. Also look at “man gdb”. This will be useful to find out where a program crashes or seg faults. You can set breakpoints to stop at specific line or function. You can set specific data values in program. 2/19/2019 WPI