summaryrefslogtreecommitdiffstats
path: root/Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp')
-rw-r--r--Bachelor/Verteilte Systeme/Praktikum1/tcpcli.cpp129
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);
+}
+/***********************************************************************/