recv lässt das Programm crashen, wenn der Client nichts sendet
-
Hallo liebe Leute,
ich benutze folgenden Beispiel Code, welcher auch einwandfrei funktioniert.
Wenn ich jetzt aber im Client den Teil auskommentiere, in dem an den Server gesendet wird, crashed eben jener...
Ich bin jetzt schon seit Stunden am suchen warum.Das Programm bricht an folgender Stelle
int status = ::recv (m_sock, buf, MAX_RECV, 0);in der Methode in der Datei Socket.cpp
int Socket::recv (std::string &s) constmit der Meldung
terminate called after throwing an instance of 'char const*' Aborted (core dumped)Wenn ich gdb mitlaufen lasse, spuckt er folgendes aus
Starting program: /pfad/a.out terminate called after throwing an instance of 'char const*' Program received signal SIGABRT, Aborted. 0x00007ffff752ff77 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.Ich hoffe ihr könnt mir helfen, danke schon mal!
-
Es tritt bei dir eine Exception auf die in Form eines C-Strings geworfen wird. Fang sie mal ab mit sowas wie:
try { // Code hier } catch (char const * exeption ) { std::cout << exeption << std::endl; }Dann solltest du sehen was genau der Fehler ist

Und das wird vermutlich diese Stelle sein:throw SocketException ( "Could not read from socket." );
-
Oh man... zum Haare ausraufen.

War wohl gestern ein wenig übermüdet.Habe anstatt
throw SocketException ("Could not receive from socket");folgendes stehen gehabt.
throw ("Could not receive from socket");Ich habe nur SocketExceptions abgefangen, ergo ist die char const* Exception ins Leere gegangen.
Danke