1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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);
}
/***********************************************************************/
|