Пример: не зависящий от протокола UDP-сервер времени и даты

Пример: не зависящий от протокола UDP-сервер времени и даты

В листинге 11.13 представлен наш сервер времени и даты, полученный путем модификации листинга 11.8 и предназначенный для использования UDP.

Листинг 11.13. Не зависящий от протокола UDP-сервер времени и даты

//names/daytimeudpsrv2.c

 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 addrlen, len;

11  struct sockaddr_storage cliaddr;

12  if (argc == 2)

13   sockfd = Udp_server(NULL, argv[1], &addrlen);

14  else if (argc == 3)

15   sockfd = Udp_server(argv[1], argv[2], &addrlen);

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 ", Sock_ntop((SA*)&cliaddr, len));

22   ticks = time(NULL);

23   snprintf(buff, sizeof(buff), "% 24s ", ctime(&ticks));

24   Sendto(sockfd, buff, strlen(buff), 0, (SA*)&cliaddr, len);

25  }

26 }

Данный текст является ознакомительным фрагментом.