Socket
-
Hallo, ich habe ein Server geschrieben, der nur das vom Clienten gesendete zurückschicken soll. Manchmal gibt aber der Client nichts aus, d.h er gibt mir ein "" zurück. Und irgendwie habe ich das Gefühl das der Client zu langsam ist....
dazu folgender Code:
der Client sendet an den Server und soll gleich wieder empfangen
while (1) { string strBuf; cout << "An Server: "; cin >> strBuf; s.SendLine( strBuf ); string l = s.ReceiveLine(); if (l.empty()) break; } // der Server empfängt und sendet es gleich wieder retour unsigned __stdcall Answer(void* a) { Socket* s = (Socket*) a; while (1) { char szBuf[10]; std::string r = s->ReceiveLine(); if (r.empty()) break; s->SendLine(r); // gets(szBuf); // s->SendLine(szBuf); } delete s; return 0; }
hier die Send und Recieve Methoden
std::string Socket::ReceiveLine() { std::string ret; while (1) { char r; recv(s_, &r, 1, 0); ret += r; if (r == '\n') { printf( "Empfangen: %s", ret.c_str() ); return ret; } } } void Socket::SendLine(std::string s) { s += '\n'; printf( "gesendet: %s", s.c_str()); send(s_,s.c_str(),s.length(),0); }
jetzt das Komische, mache ich eine manuelle Eingabe (auskommentierter Text) auf Server Seite dann gibt mir der Client immer das Richtige aus.
Mache ich etwas falsch oder ist das ein Zeitproblem oder so????
-
hmm war ne blöde Sache - ich habe meine strings nicht richtig abgenullt....
-
Hi!
Sendest du Daten über ein Netzwerk oder wie meinst du das mit "einen Server geschrieben"?