Berkeley Sockets: Ein einfacher Klient

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

client.c
#include <netdb.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <strings.h>
#include <sys/socket.h>
#include <unistd.h>
#define PORT 11011
int main (int argc, char ** argv) {
   struct sockaddr_in addr; int fd;
   struct hostent * hp; char * hostname = argv[1];
   char buffer[BUFSIZ]; ssize_t nbytes;

   if ((hp = gethostbyname(hostname)) == NULL) {
      fprintf(stderr, "unknown host: %s\n", hostname);
      exit(1);
   }
   bzero(&addr, sizeof(struct sockaddr_in));
   addr.sin_family = AF_INET;
   bcopy(hp->h_addr, (void *) &addr.sin_addr, hp->h_length);
   addr.sin_port = htons(PORT);
   if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
      perror("socket"); exit(1);
   }
   if (connect(fd, (struct sockaddr *) &addr,
               sizeof addr) < 0) {
      perror("connect"); exit(1);
   }
   while((nbytes = read(fd, buffer, sizeof buffer)) > 0 &&
         write(1, buffer, nbytes) == nbytes);
   exit(0);
}

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000