000
06.03.2004, 11:05 Uhr
~karl
Gast
|
Hallo Forum,
folgendes Problem habe ich, ich will die IP-Adresse mit der meine Applikation im Internet ist herausfinden. (ich nenne das mal so, ich meine die mit der man mich aus dem Internet erreichen kann, also nicht die lokale).
folgenden Code der auch gut läuft benutze ich:
C++: |
WORD wVersionRequested; WSADATA wsaData; char name[255]; CString ip; PHOSTENT hostinfo; wVersionRequested = MAKEWORD( 2, 0 );
if ( WSAStartup( wVersionRequested, &wsaData ) == 0 ){ if( gethostname ( name, sizeof(name)) == 0) { struct hostent * pHost; int i; pHost = gethostbyname(name);
for( i = 0; pHost!= NULL && pHost->h_addr_list[i]!= NULL; i++ ) { CString str; int j; for( j = 0; j < pHost->h_length; j++ ) { CString addr; if( j > 0 ) str += "."; addr.Format("%u", (unsigned int)((unsigned char*)pHost->h_addr_list[i])[j]); str += addr; } MessageBox(str); } } WSACleanup( ); }
|
Ich bekomme nun eine Liste mit IP-Adressen, aber wie bekomme ich die raus mit der ich im Internet bin ? Auf diesem Rechner wird mir zu erst die Lokale und dann die Richtige angezeigt, aber muß das immer so sein ? Was ist wenn der Rechner über mehrere Netzwerkkarten verfügt, dann kann ich mich doch gewiss nicht darauf verlassen, das mir die gesuchte als letztes angezeigt wird ?
Ich hoffe mein Problem ist klar, vielen Dank für die Hilfe
gruß Karl |