Um meine Internet-IP rauszufinden will ich per CAsynchsocket eine Verbindung (in diesem Fall "pop.gmx.net", 110) aufbauen und per .GetSocketName(...) die Nummer auslesen: - InternetGetConnectedState(...) liefert 1 zurück - socket.Create(110) wird erfolgreich ausgeführt - Auslesen der LAN-IPs per gethostname(...) usw. funktioniert auch - Sowohl Firewall als auch Router sind auf Durchlass geschaltet aber: socket.Connect(...) liefert FALSE zurück (auch bei anderen Servern, z.B. login.icq.com usw. die ja eigentlich im Listen-Modus sein müssten. Hab ich irgendwas nicht bedacht, das für ne Verbindung benötigt wird?
hi connect liefert false + WSAE_WOULDBLOCK oder so zurück, d.h da du asyncsocket benutzt würde connect blockieren, und daher macht er weiter, ob du eine erfolgreiche verbindung hast, merkst du wenn das OnConnect-Callback aufgerufen wird mit entsprechendem FehlerCode. Wenn du blockierende sockets willst (also das deine anwendung wartet beim connect bis er wirklich verbunden ist, dann musst du CSocket nehmen. -- class God : public ChuckNorris { };
Danke, daran hats gelegen. Aber: die Methode .GetSocketName(...) liefert mir wieder nur die LAN-IP. Wie komm ich an die Internet-IP? ist das überhaupt auf diese Weise möglich?
hi, dadrüber nicht, GetPeerName liefert dir die des gegenübers. an deine richtige WAN-Ip kommst du so nicht ran wenn du hinter einem router sitzt, da hilft nur z.b http://checkip.dyndns.org anfragen und die ausgabe auswerten. (oder deinen router anfragen, normal gibt der auch nen status aus oder so -- class God : public ChuckNorris { };