daytimeudpsrv3.c 730 B

12345678910111213141516171819202122232425262728293031
  1. #include "unp.h"
  2. #include <time.h>
  3. int
  4. main(int argc, char **argv)
  5. {
  6. int sockfd;
  7. ssize_t n;
  8. char buff[MAXLINE];
  9. time_t ticks;
  10. socklen_t len;
  11. struct sockaddr_storage cliaddr;
  12. if (argc == 2)
  13. sockfd = Udp_server_reuseaddr(NULL, argv[1], NULL);
  14. else if (argc == 3)
  15. sockfd = Udp_server_reuseaddr(argv[1], argv[2], NULL);
  16. else
  17. err_quit("usage: daytimeudpsrv [ <host> ] <service or port>");
  18. for ( ; ; ) {
  19. len = sizeof(cliaddr);
  20. n = Recvfrom(sockfd, buff, MAXLINE, 0, (SA *)&cliaddr, &len);
  21. printf("datagram from %s\n", Sock_ntop((SA *)&cliaddr, len));
  22. ticks = time(NULL);
  23. snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));
  24. Sendto(sockfd, buff, strlen(buff), 0, (SA *)&cliaddr, len);
  25. }
  26. }