TCPdaytimed.c
上传用户:wei_4586
上传日期:2008-05-28
资源大小:18k
文件大小:2k
源码类别:

网络

开发平台:

Unix_Linux

  1. /* TCPdaytimed.c - main */
  2. #include <sys/types.h>
  3. #include <sys/socket.h>
  4. #include <netinet/in.h>
  5. #include <unistd.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. extern int errno;
  9. int errexit(const char *format, ...);
  10. void TCPdaytimed(int fd);
  11. int passiveTCP(const char *service, int qlen);
  12. #define QLEN 32
  13. /*------------------------------------------------------------------------
  14.  * main - Iterative TCP server for DAYTIME service
  15.  *------------------------------------------------------------------------
  16.  */
  17. int
  18. main(int argc, char *argv[])
  19. {
  20. struct sockaddr_in fsin; /* the from address of a client */
  21. char *service = "daytime"; /* service name or port number */
  22. int msock, ssock; /* master & slave sockets */
  23. unsigned int alen; /* from-address length */
  24. switch (argc) {
  25. case 1:
  26. break;
  27. case 2:
  28. service = argv[1];
  29. break;
  30. default:
  31. errexit("usage: TCPdaytimed [port]n");
  32. }
  33. msock = passiveTCP(service, QLEN);
  34. while (1) {
  35. alen = sizeof(fsin);
  36. ssock = accept(msock, (struct sockaddr *)&fsin, &alen);
  37. if (ssock < 0)
  38. errexit("accept failed: %sn", strerror(errno));
  39. TCPdaytimed(ssock);
  40. (void) close(ssock);
  41. }
  42. }
  43. /*------------------------------------------------------------------------
  44.  * TCPdaytimed - do TCP DAYTIME protocol
  45.  *------------------------------------------------------------------------
  46.  */
  47. void
  48. TCPdaytimed(int fd)
  49. {
  50. char *pts; /* pointer to time string */
  51. time_t now; /* current time */
  52. char *ctime();
  53. (void) time(&now);
  54. pts = ctime(&now);
  55. (void) write(fd, pts, strlen(pts));
  56. }