/* myclient.c */ #include #include #include #include #include #include #include #include #include #define BUF 1024 void remN(char *s) { char *p2 = s; while(*s != '\0') { if(*s != '\t' && *s != '\n') { *p2++ = *s++; } else { ++s; } } *p2 = '\0'; } bool startsWith(const char *pre, const char *str) { size_t lenpre = strlen(pre), lenstr = strlen(str); return lenstr < lenpre ? false : memcmp(pre, str, lenpre) == 0; } int main (int argc, char **argv) { int create_socket; char buffer[BUF]; struct sockaddr_in address; int size; if( argc < 3 ){ printf("Usage: %s ServerAdresse Port\n", argv[0]); exit(EXIT_FAILURE); } if ((create_socket = socket (AF_INET, SOCK_STREAM, 0)) == -1) { perror("Socket error"); return EXIT_FAILURE; } memset(&address,0,sizeof(address)); address.sin_family = AF_INET; address.sin_port = htons (atoi(argv[2])); inet_aton (argv[1], &address.sin_addr); if (connect ( create_socket, (struct sockaddr *) &address, sizeof (address)) == 0) { printf ("Connection with server (%s) established\n", inet_ntoa (address.sin_addr)); size=recv(create_socket,buffer,BUF-1, 0); if (size>0) { buffer[size]= '\0'; printf("%s",buffer); } } else { perror("Connect error - no server available"); return EXIT_FAILURE; } do { //command vom user überprüfen char command[6] = ""; printf ("\nEnter Command: \n"); fgets (command, 6, stdin); //je nach command wird was audgeführt if(startsWith("send", command) == true) { char sender[8] = ""; char empfaenger[8] = ""; char betreff[80] = ""; char nachricht[128] = ""; char bufferString[BUF] = ""; strcpy(bufferString, ""); strcat(bufferString, "send"); //User Dateneingabe und daten einlesen printf("\n"); fgets (sender, 8, stdin); printf("\n"); fgets (empfaenger, 8, stdin); printf("\n"); fgets (betreff, 80, stdin); printf("\n"); fgets (nachricht, 80, stdin); //Buffer formatieren strcat(bufferString, ";"); strcat(bufferString, sender); strcat(bufferString, ";"); strcat(bufferString, empfaenger); strcat(bufferString, ";"); strcat(bufferString, betreff); strcat(bufferString, ";"); strcat(bufferString, nachricht); remN(bufferString); //printf("Buffer: %s", bufferString); send(create_socket, bufferString, strlen (bufferString), 0); //Response vom Server (OK oder ERR) empfangen und ausgeben char readBuffer[BUF] = ""; int valread = read(create_socket , readBuffer, 1024); printf("\n%s\n", readBuffer); } else if(startsWith("list", command) == true) { char bufferString[BUF] = "list"; char username[8] = ""; char p[20] = ""; int counter = 0; printf("\n"); fgets (username, 8, stdin); printf("\n"); fgets (p, 20, stdin); strcat(bufferString, ";"); strcat(bufferString, username); strcat(bufferString, ";"); strcat(bufferString, p); remN(bufferString); printf("%s ", bufferString); send(create_socket, bufferString, strlen (bufferString), 0); char readBuffer[BUF] = ""; int valread = read(create_socket , readBuffer, 1024); char delimiter[] = ";"; char *ptr; ptr = strtok(readBuffer, delimiter); while(ptr != NULL) { if(strcmp(ptr, ".") == 0) { } else if(strcmp(ptr, "..") == 0) { } else if (counter == 0) { printf("\n", ptr); } else { printf("Betreff: %s \n", ptr); //printf("%.*s", 17, ptr + 5); } counter = counter + 1; // naechsten Abschnitt erstellen ptr = strtok(NULL, delimiter); } } else if(startsWith("read", command) == true) { char bufferString[BUF] = "read"; char username[8] = ""; char nid[80] = ""; char folder[20] = ""; printf("\n"); fgets (username, 8, stdin); printf("\n"); fgets (folder, 20, stdin); printf("\n"); fgets (nid, 80, stdin); strcat(bufferString, ";"); strcat(bufferString, username); strcat(bufferString, ";"); strcat(bufferString, folder); strcat(bufferString, ";"); strcat(bufferString, nid); remN(bufferString); //printf("%s ", bufferString); send(create_socket, bufferString, strlen (bufferString), 0); //strcpy(buffer, ""); //buffer[size]= '\0'; char readBuffer[BUF] = ""; int valread = read(create_socket , readBuffer, 1000); printf("\n%s\n", readBuffer ); } else if(startsWith("del", command) == true) { //printf("\n del"); char username[8] = ""; char nachrichtennummer[80] = ""; char bufferString[BUF] = "del"; char p[20] = ""; printf("\n"); fgets (username, 8, stdin); printf("\n"); fgets (p, 20, stdin); printf("\n"); fgets (nachrichtennummer, 80, stdin); strcat(bufferString, ";"); strcat(bufferString, username); strcat(bufferString, ";"); strcat(bufferString, p); strcat(bufferString, ";"); strcat(bufferString, nachrichtennummer); remN(bufferString); //printf("%s ", bufferString); send(create_socket, bufferString, strlen (bufferString), 0); char readBuffer[BUF] = ""; int valread = read(create_socket , readBuffer, 1024); printf("\n%s\n", readBuffer ); } else if(startsWith("quit", command) == true) { strcpy(buffer, "quit\n"); } else { printf("DAS IST KEIN COMMAND!!!!!"); } } while (strcmp (buffer, "quit\n") != 0); close (create_socket); return EXIT_SUCCESS; }