daytimetcpsrv2.c 770 B

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