Книга: UNIX: разработка сетевых приложений

Пример: не зависящий от протокола 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 %sn", Sock_ntop((SA*)&cliaddr, len));
22   ticks = time(NULL);
23   snprintf(buff, sizeof(buff), "% 24srn", ctime(&ticks));
24   Sendto(sockfd, buff, strlen(buff), 0, (SA*)&cliaddr, len);
25  }
26 }

Оглавление книги


Генерация: 2.564. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз