From 3d54d01d2eb999dee2aac317725376aa1166baeb Mon Sep 17 00:00:00 2001 From: Georg Reisinger Date: Fri, 2 Oct 2020 06:50:36 -0700 Subject: [PATCH] LIST fertig --- myclient.c | 143 ++++++++++++++++++++++++++++++++--------------------- myserver.c | 42 ++++++++++++++-- 2 files changed, 126 insertions(+), 59 deletions(-) diff --git a/myclient.c b/myclient.c index a8294a2..a058b39 100755 --- a/myclient.c +++ b/myclient.c @@ -10,54 +10,54 @@ #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; +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 (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 ((create_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) + { + perror("Socket error"); + return EXIT_FAILURE; + } - 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; - } + 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 { - char *p=getenv("USER"); - printf("\x1B[32m"); - printf("%s@%s:%d", p, inet_ntoa (address.sin_addr),ntohs(address.sin_port)); - if (strncmp (bufferString, "send", 4) == 0 || mode == 1){ + do + { + if (strncmp(bufferString, "send", 4) == 0 || mode == 1) + { switch (last) { case 0: @@ -82,22 +82,55 @@ int main (int argc, char **argv) { printf("\x1B[34m"); printf("->SEND->Nachricht eingeben: \n"); break; - } - }else if (strncmp (bufferString, "list", 4) == 0 ){ - printf("LIST wurde endlich erkannt!\n"); - }else if (strncmp (bufferString, "read", 4) == 0 ){ + } + } + 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 ){ + } + else if (strncmp(bufferString, "del", 4) == 0) + { printf("DEL wurde endlich erkannt!\n"); } - printf("\033[0;33m"); - printf("$ "); - printf("\x1B[37m"); - fgets (buffer, BUF, stdin); + 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; + send(create_socket, buffer, strlen(buffer), 0); + } while (strcmp(buffer, "quit\n") != 0); + close(create_socket); + return EXIT_SUCCESS; } diff --git a/myserver.c b/myserver.c index 69679df..24e653d 100755 --- a/myserver.c +++ b/myserver.c @@ -247,8 +247,10 @@ struct rec readFile(char filename[1024]) printf("B"); fread(&my_record, sizeof(struct rec), 1, filePointer); printf("C"); - fclose(filePointer); + printf("\nBETREFF in readFile(): %s", my_record.betreff); + printf("D"); + fclose(filePointer); //my_record_p->betreff = my_record.betreff; //my_record_p->sender = my_record.sender; //my_record_p->receiver = my_record.receiver; @@ -291,7 +293,7 @@ int writeToFile(char sender[1024], char betreff[1024], char receiver[1024], char printf("Vor useradd() in writeToFile()! sender: %s, msgnumber: %d, msg: %s, betrf: %s, empf: %s\n", sender, msgNumber, message, betreff, receiver); char receiverfile[1024]; strcpy(receiverfile, "posteingang/"); - strcat(receiverfile, sender); + strcat(receiverfile, receiver); int receiverresult = addUserMessage(receiverfile, msgNumber); printf("receiverresult: %d", receiverresult); char senderfile[1024]; @@ -484,6 +486,8 @@ int main(int argc, char **argv) printf("->LIST->Username wurde eingegeben:\x1B[33m %s\x1B[37m\n", bufferString); char *username; username = strdup(bufferString); + + //POSTEINGANG char filename[1024]; strcpy(filename, "posteingang/"); strcat(filename, username); @@ -495,6 +499,13 @@ int main(int argc, char **argv) printf("0.1\n"); struct rec userFilesStruct[1024]; printf("1\n"); + + //Send to client + char posteingangMsg[1024]; + sprintf(posteingangMsg, "\x1B[32mPOSTEINGANG Nachrichten: %d\n\n\n\n", msgNumbersStruct.lenght); + int sendresult = send(new_socket, posteingangMsg, strlen(posteingangMsg), 0); + printf("Send result: %d", sendresult); + for (int i = 0; i < msgNumbersStruct.lenght; i++) { @@ -505,12 +516,20 @@ int main(int argc, char **argv) printf("2.4.%d\n", i); struct rec my_record_p = readFile(filename); printf("2.5.%d\n", i); - printf("\n\nNachricht: %d Betreff: %s\n\n", i, my_record_p.betreff); + //Send to client + printf("\n\nEINGANG -- Nachricht: %d Betreff: %s\n\n", i, my_record_p.betreff); + sprintf(posteingangMsg, "\x1B[34mBetreff: %s\n", my_record_p.betreff); + sendresult = send(new_socket, posteingangMsg, strlen(posteingangMsg), 0); + printf("Send result: %d\n", sendresult); + userFilesStruct[i] = my_record_p; printf("2.6.%d\n", i); } printf("3\n"); + //postausgang + + filename[1024]; strcpy(filename, "postausgang/"); strcat(filename, username); @@ -518,6 +537,12 @@ int main(int argc, char **argv) struct msgNumberArr msgNumbersStructAusgang = getUserMessages(filename); printf("msgnumberstruct lenght: %d\n", msgNumbersStructAusgang.lenght); + //Send to client + char postausgangMsg[1024]; + sprintf(postausgangMsg, "\x1B[32mPOSTAUSGANG Nachrichten: %d\n\n", msgNumbersStructAusgang.lenght); + sendresult = send(new_socket, postausgangMsg, strlen(postausgangMsg), 0); + printf("Send result: %d", sendresult); + printf("0\n"); printf("0.1\n"); struct rec userFilesStructAusgang[1024]; @@ -532,10 +557,19 @@ int main(int argc, char **argv) printf("2.4.%d\n", i); struct rec my_record_p = readFile(filename); printf("2.5.%d\n", i); - printf("\n\nNachricht: %d Betreff: %s\n\n", i, my_record_p.betreff); + printf("\n\nAUSGANG -- Nachricht: %d Betreff: %s\n\n", i, my_record_p.betreff); + //Send to client + char postausgangMsg[1024]; + sprintf(postausgangMsg, "\x1B[34mBetreff: %s\n", my_record_p.betreff); + sendresult = send(new_socket, postausgangMsg, strlen(postausgangMsg), 0); + printf("Send result: %d", sendresult); + userFilesStructAusgang[i] = my_record_p; printf("2.6.%d\n", i); } + //Send to client + sendresult = send(new_socket, "LISTREADSTOPNOW\n", strlen("LISTREADSTOPNOW\n"), 0); + printf("Send result: %d", sendresult); printf("3\n"); bufferString[0] = '\0'; buffer[0] = '\0';