daytimetcpsrv2.c 735 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "unp.h"
  2. #include <time.h>
  3. int
  4. main(int argc, char **argv)
  5. {
  6. int listenfd, connfd;
  7. socklen_t addrlen, len;
  8. struct sockaddr *cliaddr;
  9. char buff[MAXLINE];
  10. time_t ticks;
  11. if (argc < 2 || argc > 3)
  12. err_quit("usage: daytimetcpsrv2 [ <host> ] <service or port>");
  13. daemon_init(argv[0], 0);
  14. if (argc == 2)
  15. listenfd = Tcp_listen(NULL, argv[1], &addrlen);
  16. else
  17. listenfd = Tcp_listen(argv[1], argv[2], &addrlen);
  18. cliaddr = Malloc(addrlen);
  19. for ( ; ; ) {
  20. len = addrlen;
  21. connfd = Accept(listenfd, cliaddr, &len);
  22. err_msg("connection from %s", Sock_ntop(cliaddr, len));
  23. ticks = time(NULL);
  24. snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));
  25. Write(connfd, buff, strlen(buff));
  26. Close(connfd);
  27. }
  28. }