Page #441 (Chapter 22)


Chapter 24

24.1

Yes, in the first example, 2 bytes are sent with a single urgent pointer that points to the byte following the b . But in the second example (the two function calls), first the a is sent with an urgent pointer that points just beyond it, and this is followed by another TCP segment containing the b with a different urgent pointer that points just beyond it.

24.2

24.2 Figure E.16 shows the version using poll .

Figure E.16 Version of Figure 24.6 using poll instead of select .

oob/tcprecv03p.c

 1 #include   "unp.h"  2 int  3 main(int argc, char **argv)  4 {  5     int     listenfd, connfd, n, justreadoob = 0;  6     char    buff[100];  7     struct pollfd pollfd[1];  8     if (argc == 2)  9         listenfd = Tcp_listen(NULL, argv[1], NULL); 10     else if (argc == 3) 11         listenfd = Tcp_listen(argv[1], argv[2], NULL); 12     else 13         err_quit("usage: tcprecv03p [ <host> ] <port#>"); 14     connfd = Accept(listenfd, NULL, NULL); 15     pollfd[0].fd = connfd; 16     pollfd[0].events = POLLRDNORM; 17     for ( ; ; ) { 18         if (justreadoob == 0) 19             pollfd[0].events= POLLRDBAND; 20         Poll(pollfd, 1, INFTIM); 21         if (pollfd[0].revents & POLLRDBAND) { 22             n = Recv(connfd, buff, sizeof(buff) - 1, MSG_OOB); 23             buff[n] = 0;        /* null terminate */ 24             printf("read %d OOB byte: %s\n", n, buff); 25             justreadoob = 1; 26             pollfd[0].events &= ~POLLRDBAND;    /* turn bit off */ 27         } 28         if (pollfd[0].revents & POLLRDNORM) { 29             if ( (n = Read(connfd, buff, sizeof(buff) - 1)) == 0) { 30                 printf("received EOF\n"); 31                 exit(0); 32             } 33             buff[n] = 0;        /* null terminate */ 34             printf("read %d bytes: %s\n", n, buff); 35             justreadoob = 0; 36         } 37     } 38 } 



UNIX Network Programming Volume 1, Third Edition
Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition)
ISBN: 0131411551
EAN: 2147483647
Year: 2003
Pages: 441

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net