Logo
IT Dienstleistungen

Wer Wird Millinär Client

Wer wird Millinär Client. Server-Komponente gibt es hier.

Noch nicht lauffähig
/**********************************
* Praktikum Betriebssysteme SS 09 *
* Manuel Krischer                 *
* Wer wird Millionaer Client      *
**********************************/                                                                                                                                                                                                                                                       
 
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>     
#include <string.h>    
 
#define PORT_DEFAULT    33333
#define MESSAGESIZE     8192 
#define MAX_PORT        65535
#define MIN_PORT        1024 /*drunter sind die well-known ports*/
#define HOSTNAMELENGTH  255                                       
 
int main(int argc, char *argv[]) {
 
      int port = PORT_DEFAULT;    
        if (argc == 3 && atoi(argv[2]) > MIN_PORT && atoi(argv[2]) <= MAX_PORT) {
          port = atoi(argv[2]);                                                  
        }                                                                        
        else if (argc < 2 || argc > 3 ) {                                        
          printf("\n\tAufruf: %s <SERVERNAME> [PORTNUMMER]\n", argv[0]);                      
          printf("Portnummer muss ein Port zwischen %i und %i sein,\n", MIN_PORT, MAX_PORT);  
          printf("auf dem ein \"Wer wird Millionaer\"-Server laeuft.\n");                     
          exit(1);                                                                            
        }                                                                                     
 
    /*intitialisierung*/
     char  in[MESSAGESIZE];
     char  out[MESSAGESIZE];
     int   sd, groesse;     
     char hostname[HOSTNAMELENGTH];                          
 
     struct sockaddr_in sin;
     struct sockaddr_in pin;
     struct hostent *hp;    
 
     /*hostnamen aus eingabevariable kopieren*/                                                                                    
     strcpy(hostname,argv[1]);                                                                                                     
 
     /*hostinformationen aufloesen*/
     if ((hp = gethostbyname(hostname)) == 0) {
           printf("Hostname nicht gefunden\n");
           exit(1);                            
     }                                         
     /* socket struct mit host informationen fuellen */
       memset(&pin, 0, sizeof(pin));                     
       pin.sin_family = AF_INET;                         
       pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
       pin.sin_port = htons(port);                                    
     /* socket zuweisen*/                                             
     if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {              
         printf("Socket konnte nicht zugewiesen werden.\n");          
         exit(1);                                                     
     }                                                                
     /* verbinde PORT an HOST */                                      
     if (connect(sd,(struct sockaddr *)  &pin, sizeof(pin)) == -1) {  
         printf("Konnte nicht verbunden werden...\n");                
         exit(1);                                                     
     }                                                                
 
     while (TRUE) {
       /*ausgabe*/
       do {
         printf("empfange: ");
         if (groesse = recv(sd, in, MESSAGESIZE, 0) == 0 ) {
             break;
         }
         printf("%i\n",groesse);
         in[groesse] = '\0';
         printf("%s", in);
       } while (1);
 
       printf(" ___ ");
       /*eingabe*/
       scanf("%s",&out);
       out[1] = '\n';
       out[2] = '\0';
       printf("eingelesen: %s \n",out);
       if (send (sd, out, strlen(out), 0 )== -1) {
           perror("send");
           close(sd);
           exit(1);
       }
       printf("gesendet\n");
     }
 
close(sd);
printf("Client beendet\n");
}

Seiten-Werkzeuge