tcprecv04.c 666 B

123456789101112131415161718192021222324252627282930313233
  1. #include "unp.h"
  2. int
  3. main(int argc, char **argv)
  4. {
  5. int listenfd, connfd, n, on=1;
  6. char buff[100];
  7. if (argc == 2)
  8. listenfd = Tcp_listen(NULL, argv[1], NULL);
  9. else if (argc == 3)
  10. listenfd = Tcp_listen(argv[1], argv[2], NULL);
  11. else
  12. err_quit("usage: tcprecv04 [ <host> ] <port#>");
  13. Setsockopt(listenfd, SOL_SOCKET, SO_OOBINLINE, &on, sizeof(on));
  14. connfd = Accept(listenfd, NULL, NULL);
  15. sleep(5);
  16. for ( ; ; ) {
  17. if (Sockatmark(connfd))
  18. printf("at OOB mark\n");
  19. if ( (n = Read(connfd, buff, sizeof(buff)-1)) == 0) {
  20. printf("received EOF\n");
  21. exit(0);
  22. }
  23. buff[n] = 0; /* null terminate */
  24. printf("read %d bytes: %s\n", n, buff);
  25. }
  26. }