Eigene Socket-Klasse: Fehler bei connect()
-
dann würd ich etwas wegmachen, kompilieren, wegmachen, kompilieren usw. bis es wieder läuft, dann weißt du wo der fehler liegt und kannst genauer fragen
-
Benutze einen Debugger.
Bye, TGGC (Für echte Fans)
-
okay. ich habe den fehler gefunden. lag am benutzerprogramm (test.exe). der hat die ip falsch übergeben
.
private: std::string ip; std::string GeneriereIp() { // ... generieren printf("tempip: %s\n",ip.c_str()); // hier richtige IP return tempip; } public: testit() { ip=GeneriereIp(); // hier irgendein kauderwelsch übergeben. warum? }
warum funktioniert das nicht???
ich havs jetzt so gelöst, das ich nicht mehr einen string zutückgebe sondern void benutze und die variable ip von der methode GeneriereIp() direkt setzen lasse.
aber das muß doch auch so wie oben gehen?nja. auf jeden fall funzt es.
thx...
-
// HIER KOMMT DER FEHLER
/* Baue die Verbindung zum Server auf /
if (connect(sock,(struct sockaddr)&server_in,sizeof(server_in))<0) {
SetError("Konnte Host "+host+" nicht erreichen!");
return false;
}Da ist ein fehler bei SetError: du must \"+host+\" schreiben - oder sehe ich da was falsch?
-
Ja, Du hast Recht:
Du siehst da was falsch!
-
sn0b schrieb:
[cpp]
printf("tempip: %s\n",ip.c_str()); // hier richtige IP
return tempip;
[/cpp]
warum funktioniert das nicht???Ist das Absicht, dass der String, den du ausgibst, nicht derselbe ist wie der, den du zurückgibst?
-
MFK schrieb:
sn0b schrieb:
[cpp]
printf("tempip: %s\n",ip.c_str()); // hier richtige IP
return tempip;
[/cpp]
warum funktioniert das nicht???Ist das Absicht, dass der String, den du ausgibst, nicht derselbe ist wie der, den du zurückgibst?
ich glaube er sollte besser sprintf nehmen
-
nein.
aber ich gab trotzdem das ur-problem wieder das er bei connect() abschmiert.
und zwar dann, wenn er keine verbindung aufbauen kann: die verbindung z.b. zu heise.de geht, aber wenn ich irgendeine ip eintrage die nicht exisiert, also wo halt keine antwort kommt, dann schmiert er wie oben beschrieben ab.
-
Tja, dann wirst du dir wohl doch TGGCs Rat zu Herzen nehmen müssen und endlich den Debugger benutzen. Dann gibts auch eine ausführlichere Fehlermeldung.
-
okay. ich habs jetzt. ich habe TGGCs rat befolgt und wollte den debugger starten. dafür muß man bei dev-c++ nunmal ein projekt erzeugen und als ich das gemacht hatte und kompiliert habe, sagte der compiler mir auch gleich den fehler: habe printf nen std::string übergeben ohne diesen vorher in einen c-string umzuwandeln. diese ausgabe kam direct nach connect() wenn der host nicht erreicht werden konnte. dummer fehler, ich weiß. aber hab n ja dank eurer hilfe doch noch gefunden. war nämlich echt am verwzeifeln.
vielen dank nochma!
auf bald
-
sn0b schrieb:
aber hab n ja dank eurer hilfe doch noch gefunden.
Das jemand dies als Hilfe erkannt hat, erlebe ich selten. Glückwunsch.
Bye, TGGC (Der Held lebt!)