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