Server/Client Problem (Dringend)
-
moin moin...
Hab grad nen Server ud nen Client nach dem c-worker Tutorial geschreiben läuft auch alles soweit einziges Problem sit.. Ich starte halt den SErver der geht in den listen modus soweit so gut dann starte ich den Client alles wird erkennt nun soll ich eine Nachricht eingeben, im Client, und diese wird an den Server gesendet bevor es dazu kommt stürzt der Server allerdings ab...
Hab beides hier mal hochgeladen vielleicht findet ja irgendjemand den Fehler..
Server ftp://inv151673@ftpinv151673.in.ohost.de/c++/Server.cpp
und der Client ftp://inv151673@ftpinv151673.in.ohost.de/c++/Client.cppPasswort ist hallowelt
macht euch keine Hoffnungen da ist nichts anderes außer den beiden Quellcodes drauf und ich änder es heut abend wuieder ;>
PS. Sry das ich hier im Flaschen Forum gelandet bin wollte nicht zu Projekte war nen Versehen ^^
-
WildChild schrieb:
Hab beides hier mal hochgeladen vielleicht findet ja irgendjemand den Fehler..
Server ftp://inv151673@ftpinv151673.in.ohost.de/c++/Server.cpp
und der Client ftp://inv151673@ftpinv151673.in.ohost.de/c++/Client.cppPasswort ist hallowelt
Ich mach mir doch nicht die Mühe, das Passwort zu kopieren. Nimm doch einfach pastebin oder so etwas.
-
Oder paste es einfach hier ins Forum, so lang sind die Dateien jetzt nicht, das kann man schon noch lesen.
Wie auch immer, mir sind natürlich etliche "Unschönheiten" aufgefallen, aber was solls. Der Fehler könnte bei:sprintf(buf2, "Du mich auch \s", buf); // Sollte wohl %s heißen
liegen? Sonst sehe ich gerade nichts.
-
ja hab ich selber shcon verbessert aber daran lags nicht ^^
aber ich hab den fehler gefunden ...statt
if(connectedsocket = accept(acceptsocket, NULL, NULL) == INVALID_SOCKET) { // bla } einfach connectedsocket = accept(acceptsocket, NULL, NULL); if(connectedsocket == INVALID_SOCKET) { // bla }
warum auch immer das so ist sonst funktionierts auch ...
-
Sonst funktionierts auch ? Ist wahrscheinlich eher Glückssache.
Solltest du dir lieber abgewöhnen, das bringt nur unnötig Ärger. Ich kann mir gut vorstellen, dass dein Programm an der Stelle zuerst geprüft hat, ob accept == INVALID_SOCKET ist, und dann false (weil der Verbindungsaufbau ja geklappt hat) an connectedsocket weitergeben hat.
Damit hast du dann ein komplett falsches Handle erstellt und der Debugger müsste dir mit 90%iger Sicherheit an der Stelle ein SIGSEGV rausgehauen haben und dazu noch ein schönes "Cannot acces memory", weil recv mit 32 Bit (SOCKET) an der Stelle gerechnet hat und nicht nur mit 8 Bit (bool).