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