5f9b116c30fcf2fe9444729eed73e15081a657a4
[gapil.git] / listati / TCP_iter_daytimed.c
1 #include <sys/types.h>   /* predefined types */
2 #include <unistd.h>      /* include unix standard library */
3 #include <arpa/inet.h>   /* IP addresses conversion utilities */
4 #include <sys/socket.h>  /* socket library */
5 #include <stdio.h>       /* include standard I/O library */
6 #include <time.h>
7 #define MAXLINE 80
8 #define BACKLOG 10
9 int main(int argc, char *argv[])
10 {
11 /* 
12  * Variables definition  
13  */
14     int list_fd, conn_fd;
15     int i;
16     struct sockaddr_in serv_add;
17     char buffer[MAXLINE];
18     time_t timeval;
19     ...
20     /* create socket */
21     if ( (list_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
22         perror("Socket creation error");
23         exit(-1);
24     }
25     /* initialize address */
26     memset((void *)&serv_add, 0, sizeof(serv_add)); /* clear server address */
27     serv_add.sin_family = AF_INET;                  /* address type is INET */
28     serv_add.sin_port = htons(13);                  /* daytime port is 13 */
29     serv_add.sin_addr.s_addr = htonl(INADDR_ANY);   /* connect from anywhere */
30     /* bind socket */
31     if (bind(list_fd, (struct sockaddr *)&serv_add, sizeof(serv_add)) < 0) {
32         perror("bind error");
33         exit(-1);
34     }
35     /* listen on socket */
36     if (listen(list_fd, BACKLOG) < 0 ) {
37         perror("listen error");
38         exit(-1);
39     }
40     /* write daytime to client */
41     while (1) {
42         if ( (conn_fd = accept(list_fd, (struct sockaddr *) NULL, NULL)) <0 ) {
43             perror("accept error");
44             exit(-1);
45         }
46         timeval = time(NULL);
47         snprintf(buffer, sizeof(buffer), "%.24s\r\n", ctime(&timeval));
48         if ( (write(conn_fd, buffer, strlen(buffer))) < 0 ) {
49             perror("write error");
50             exit(-1);
51         }
52         close(conn_fd);
53     }
54     /* normal exit */
55     exit(0);
56 }