Ahoj, nevěděl by ste mi někdo říct kde dělám chybu? Snažím se o komunikaci TCP/IP klient server, kdy klient se připojí k serveru pošle nějaká data a server to přečte a zobrazí. Můj problém je že i když spojení navážu, text se přenese, tak jako výstup se mi zobrazí nesmysly. Dík
Server
#include <iostream>
#include <arpa/inet.h>
using namespace std;
int main(int argc, char** argv) {
sockaddr_in serverAddr;
sockaddr_in clietnAddr;
int mainSocket;
int client;
socklen_t clientLen;
if((mainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) == -1) {
cerr << "chyba vytváření socketu\n";
return -1;
}
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(9939);
serverAddr.sin_addr.s_addr = INADDR_ANY;
if(bind(mainSocket, (sockaddr*) &serverAddr, sizeof(serverAddr)) == -1) {
cerr << "chyba pojemnování socketu\n";
return -1;
}
if(listen(mainSocket, 10) == -1) {
cerr << "chyba fronty\n";
return -1;
}
clientLen = sizeof(clietnAddr);
client = accept(mainSocket, (sockaddr*) &clietnAddr, &clientLen);
if(client == -1) {
cerr << "chyba připojení\n";
return -1;
}
char buffer[1000];
string text = "";
int byteRead = 0;
do {
byteRead = recv(client, buffer, 999, 0);
cout << "přečteno : " << byteRead << endl;
text += buffer;
} while(byteRead > 0);
cout << text;
}
klient
#include <iostream>
#include <arpa/inet.h>
#include <string>
using namespace std;
int main(int argc, char** argv) {
sockaddr_in serverAddr;
int mainSocket;
string text = "Ahoj já sem klient";
if((mainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) == -1) {
cerr << "chyba vytváření socketu\n";
return -1;
}
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(9939);
serverAddr.sin_addr.s_addr = inet_addr("192.168.0.103");
if(connect(mainSocket, (sockaddr*) &serverAddr, sizeof(serverAddr)) == -1) {
cerr << "chyba spojení\n";
return -1;
}
if(send(mainSocket, &text, text.size() + 1, 0) == -1) {
cerr << "Chyba odesílání\n";
return -1;
}
}