/* myclient.c */ #include #include #include #include #include #include #include #include #define BUF 1024 #define PORT 6543 int main(int argc, char **argv) { char *meinport = argv[2]; int create_socket; char buffer[BUF]; struct sockaddr_in address; int size; if (argc < 2) { printf("Usage: %s ServerAdresse\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(*meinport); 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; } int last = 0; int mode = 0; char bufferString[1024]; do { if (strncmp(bufferString, "send", 4) == 0 || mode == 1) { switch (last) { case 0: last += 1; mode = 1; printf("\x1B[34m"); printf("->SEND->Sender eingeben: \n"); break; case 1: last += 1; printf("\x1B[34m"); printf("->SEND->Empfänger eingeben: \n"); break; case 2: last += 1; printf("\x1B[34m"); printf("->SEND->Betreff eingeben: \n"); break; case 3: last = 0; mode = 0; printf("\x1B[34m"); printf("->SEND->Nachricht eingeben: \n"); break; } } else if (strncmp(bufferString, "list", 4) == 0 || mode == 2) { switch (last) { case 0: last += 1; mode = 2; printf("\x1B[34m"); printf("->LIST->Username eingeben: \n"); break; case 1: last = 0; mode = 0; printf("\x1B[34m"); printf("->List"); while (strcmp(buffer, "LISTREADSTOPNOW\n") != 0) { size = recv(create_socket, buffer, BUF - 1, 0); if (size > 0) { buffer[size] = '\0'; printf("\x1B[37m %s", buffer); } } break; } } else if (strncmp(bufferString, "read", 4) == 0) { printf("READ wurde endlich erkannt!\n"); } else if (strncmp(bufferString, "del", 4) == 0) { printf("DEL wurde endlich erkannt!\n"); } else { char *p = getenv("USER"); printf("\x1B[32m"); printf("%s@%s:%d", p, inet_ntoa(address.sin_addr), ntohs(address.sin_port)); } printf("\x1B[33m$ \x1B[37m"); fgets(buffer, BUF, stdin); strcpy(bufferString, buffer); send(create_socket, buffer, strlen(buffer), 0); } while (strcmp(buffer, "quit\n") != 0); close(create_socket); return EXIT_SUCCESS; }