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"); }