diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp')
| -rw-r--r-- | Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp b/Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp new file mode 100644 index 0000000..ac10492 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp @@ -0,0 +1,129 @@ +/************************************************************************ + * + * Example of client using TCP protocol. + * + ***********************************************************************/ +#include <unistd.h> +#include "inet.h" +#include "error.cpp" +#include "util.cpp" +#include <iostream> +using namespace std; + +const int MAXLINE=255; // max length of a line + +// send message msg to server and receive response in resp +void mySend(int sockfd, char *msg, char *resp) { + + + int n; // Länge des Strings + // Daten senden + n = strlen(msg); + if (writen(sockfd, msg, n) != n) + err_sys("str_cli: writen error on socket"); // Fehler beim Schreiben + + // Daten empfangen + n = readline(sockfd, resp, MAXLINE); + if (n < 0) + err_dump("str_cli: readline error"); + resp[n] = 0; /* null terminate */ +} + + +void str_cli(FILE *fp, int sockfd) +{ + int n; + char sendline[MAXLINE], recvline[MAXLINE + 1]; + + + + // Auswahl der Optionen (Eintragen / Suchen) + int m_Auswahl = '0'; + + while (true) { + + cout<<"Telefonbuch\n\nBitte auswählen:\n"; + cout<<" 1: eintragen\n"; + cout<<" 2: suchen\n"; + cout<<" 3: beenden\n"; + cin>>m_Auswahl; + switch (m_Auswahl) { + case (1): + // Neuen Eintrag im Telefonbuch + cout<<"Eintragen:\n"; + char m_Name[50]; + char m_Tel[50]; + + cout<<"Name: "; scanf("%s", &m_Name); strcat(m_Name, "\n"); + cout<<"Tel: "; scanf("%s", &m_Tel); strcat(m_Tel, "\n"); + + mySend(sockfd, "addEntry\n", recvline); + if (strcmp(recvline,"OK\n") != 0) + printf("Error: %s\n", recvline); + mySend(sockfd, m_Name, recvline); + if (strcmp(recvline,"OK\n") != 0) + printf("Error: %s\n", recvline); + mySend(sockfd, m_Tel, recvline); + if (strcmp(recvline,"OK\n") != 0) + printf("Error: %s\n", recvline); + break; + case (2): + // Eintrag im Telefonbuch suchen + cout<<"Suchen\n"; + char m_Search[50]; + cout<<"Name: "; scanf("%s", &m_Search); strcat(m_Search, "\n"); + + mySend(sockfd, "searchEntry\n", recvline); + if (strcmp(recvline,"OK\n") != 0) + printf("Error: %s\n", recvline); + mySend(sockfd, m_Search, recvline); + printf("Ergebnis: %s\n", recvline); + + break; + case (3): + mySend(sockfd,"end\n",recvline); + cout<<"Client beendet...\n"; + return; + break; + default: + cout<<"Falsche Eingabe\n"; + break; + } + } + + +} +/***********************************************************************/ + +/************************************************************************ + * main function, client for TCP/IP echo server + */ +int main(int argc, char** argv) +{ + int sockfd; + struct sockaddr_in serv_addr; + + pname = argv[0]; + + // Fill in the structure "serv_addr" with the address of the + // server that we want to connect with. + bzero((char *) &serv_addr, sizeof(serv_addr)); + serv_addr.sin_family = AF_INET; + serv_addr.sin_addr.s_addr = inet_addr(SERV_HOST_ADDR); + serv_addr.sin_port = htons(SERV_TCP_PORT); + + // Open a TCP socket (an Internet stream socket). + if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) + err_sys("client: can't open stream socket"); + + // Connect to the server. + if (connect(sockfd, (struct sockaddr *) &serv_addr, + sizeof(serv_addr)) < 0) + err_sys("client: can't connect to server"); + + str_cli(stdin, sockfd); /* do it all */ + + close(sockfd); + exit(0); +} +/***********************************************************************/ |
