Problem beim Versenden von einem String per Client an Server
-
Serverklasse:
Header:
int Server::Handle_Client(const int sock) { char buffer[BUF_SIZ]; int bytes; bytes = recv(sock, buffer, sizeof(buffer) - 1, 0); if (bytes == -1) { perror("recv() in get_banner() failed"); return 1; } buffer[bytes] = '\0'; cout << buffer << endl; return 0; }Source:
#include "Klasse.h" int main() { Server a; a.SocketStart(); return 0; }Client:
void cut(char *s) { while (*s && (*s != '\r') && (*s != '\n')) s++; *s = '\0'; } DWORD WINAPI reader(PVOID pParam) { char line[BUF_SIZ]; SOCKET s; s = *(SOCKET*)pParam; while(fgets(line, sizeof(line) - 3, stdin)) { cut(line); strcat(line, "\r\n"); /* passt sicher */ if (send(s, line, strlen(line), 0) == -1) return 1; } return 0; } DWORD WINAPI writer(PVOID pParam) { char buffer[BUF_SIZ] = "gar nichts"; int bytes; SOCKET s; s = *(SOCKET*)pParam; while((bytes = recv(s, buffer, sizeof(buffer), 0)) > 0) fwrite(buffer, 1, bytes, stdout); return 0; }Mein Problem ist, dass die Daten, die ich vom Client zum Server senden möchte, nicht ankommen. Die Funktion recv() gibt den Fehlercode -1 bzw. SOCKET_ERROR aus.
recv() in get_banner() failed...
Was mache ich falsch?
-
am besten du laesst den Fehlercode an den entsprechende Stellen durch WSAGetLastError() ausgeben.
Da du hier ne TCP-Verbindung verwendest (:D behaupte ich einfach mal), hat denn alles davor funktioniert?
Zum Beispiel das erstellen der Sockets, das connect, wenn es ein Client ist.
Das bind und listen beim Server?
-
Ja, alles andere hat funktioniert, ich habe es auch immer geprüft.
-
Wie schon eben erwaent: WSAGetLastError()
Die von dir genannte -1 gibt letztendlich nur aus, dass keine Bytes empfangen wurden. Ich erhoffen mir einen Fehlercode > 10000
-
BasicMan01 schrieb:
Wie schon eben erwaent: WSAGetLastError()
Die von dir genannte -1 gibt letztendlich nur aus, dass keine Bytes empfangen wurden. Ich erhoffen mir einen Fehlercode > 10000
Fehler: 10057. Socket not connected.
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-262433.html
Hier gehts weiter.