Berkeley Sockets: Zeitansage

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

timeserver.c
#include <netdb.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
#define PORT 11011
int main () {
   struct sockaddr_in address, client_addr;
   size_t client_addr_len = sizeof client_addr;
   int sfd, fd; int optval = 1;
   bzero(&address, sizeof(struct sockaddr_in));
   address.sin_family = AF_INET;
   address.sin_port = htons(PORT);
   if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ||
        setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR,
	           &optval, sizeof optval) < 0 ||
        bind(sfd, (struct sockaddr *) &address,
             sizeof(struct sockaddr_in)) < 0 ||
        listen(sfd, SOMAXCONN) < 0) {
      perror("socket"); exit(1);
   }
   while ((fd = accept(sfd, (struct sockaddr *) &client_addr,
                       &client_addr_len)) >= 0) {
      char timebuf[32]; time_t clock; time(&clock);
      ctime_r(&clock, timebuf, sizeof timebuf);
      write(fd, timebuf, strlen(timebuf)); close(fd);
   }
}

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003