Advanced Sockets - PowerPoint PPT Presentation

advanced sockets n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Advanced Sockets PowerPoint Presentation
Download Presentation
Advanced Sockets

play fullscreen
1 / 9
Advanced Sockets
84 Views
Download Presentation
elma
Download Presentation

Advanced Sockets

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Introduction to Networking Instructor: Prof. Aleksandar Kuzmanovic Advanced Sockets John Otto TA , Intro to Networking Jan 24, 2007 Recital 3

  2. Homework grader • Geet Duggal, geet@geetduggal.com. • Office hours on Tuesdays between 4 and 6

  3. The problem You are a server and you want to listen for incoming connections as well as keep reading from the connections you already have. • Blocking • "block" is techie jargon for "sleep". • Lots of functions block. • accept() blocks. • All the recv() functions block

  4. The select call Enables you to deal with many clients at the same time HOW ? Monitors several sockets at the same time. tell you which ones are ready for reading, which are ready for writing,

  5. Synopsis of select() • #include <sys/time.h> • #include <sys/types.h> • #include <unistd.h> • int select(int numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); • It'll tell you which ones are ready for reading, which are ready for writing, and which sockets have raised exceptions, if you really want to know that.

  6. Manipulate sets • Each set is of the type fd_set. The following macros operate on this type: • FD_ZERO(fd_set *set) -- clears a file descriptor set • FD_SET(int fd, fd_set *set) -- adds fd to the set • FD_CLR(int fd, fd_set *set) -- removes fd from the set • FD_ISSET(int fd, fd_set *set) -- tests to see if fd is in the set • Example - when select() returns, readfds will be modified to reflect which of the file descriptors you selected is ready for reading. Test them with the macro FD_ISSET(),

  7. THE CODE A multi-person chat server

  8. DEMO A multi-person chat server

  9. Important Points • Accepting new connections via select • Client closes connection • Select returns “socket ready to read” • recv() will return 0.