/************************************************************************ * * Example of client using TCP protocol. * ***********************************************************************/ #include #include "inet.h" #include "error.cpp" #include "util.cpp" #include 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); } /***********************************************************************/