Archief - [PROG][C/C++] ip van pc waar prog op draait achterhalen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

EyeBallz

Legacy Member
weet er iemand hoe ge de ip van de pc waarop ge aan 't werken zijt achterhaalt?

EyeBallz

Legacy Member
de tweede link is voor c#, terwijl ik enkel c & c++ kan

die eerste link kan ik mss wel gebruiken moest ik dan in de code v die webpage kunnen zoeken naar mijn ip, en die zo inlezen in mijn programma

iemand een oplossing?

S3cT0r

Legacy Member
Als de computer niet achter DHCP zit dan doe je gewoon een System("ipconfig > meh.txt"); ofzoiets en dan heb je direct het IP, anders kan je inderdaan winsock gebruiken om bijvoorbeeld sites als www.whatismyip.com aan te wenden om de externe IP te verkrijgen

(Het handigste is mss een eigen PHP pagina maken die alleen het IP-adres verstuurt, dan moet je niks onnodig parsen).

killgore

Legacy Member
S3cT0r zei:
Als de computer niet achter DHCP zit dan doe je gewoon een System("ipconfig > meh.txt"); ofzoiets en dan heb je direct het IP, anders kan je inderdaan winsock gebruiken om bijvoorbeeld sites als www.whatismyip.com aan te wenden om de externe IP te verkrijgen

(Het handigste is mss een eigen PHP pagina maken die alleen het IP-adres verstuurt, dan moet je niks onnodig parsen).
nikske sites bezoeken :p:

gethostname
gethostbyname
inet_ntoa

met die functies kunde uw ip wel verkrijge in principe :). (wel eerst nog wa initialize/connecte d8 ek, bennet nie zeker)

Heb et 1 keer getest en het werkte wel, zit nu op andere pc, ma in principe als ge wa zoekt vinde daar info over ze ;).

edit: in principe is get_addrinfo 'beter' (nieuwer), ma da heb ek nooit getest (kheb deze manier via google gevonde en vond ze vrij simpel:p).

dJeez

Legacy Member
Dan krijg je uiteraard wel enkel het lokale IP terug, wat dus wil zeggen dat dat niet per sé het IP is waarmee je online zit (denken we maar aan routers met NAT support :p). De vraag is dus eerder welk IP voor jouw doel belangrijk is.

EyeBallz

Legacy Member
ge bedoelt dat ik dus iets ga terugkrijgen in den aard van '192.168.0.xx'
dat is dus idd niet de bedoeling
ik zou de ip willen weten zoals degenen van buiten mijn lan hem zien

S3cT0r

Legacy Member
killgore zei:
nikske sites bezoeken :p:

gethostname
gethostbyname
inet_ntoa

met die functies kunde uw ip wel verkrijge in principe :). (wel eerst nog wa initialize/connecte d8 ek, bennet nie zeker)
...

Natuurlijk werkt dat, als je niet achter een NAT zit, en dat is in veel gevallen wel zo, jouw manier is veel beter dan ipconfig > file.txt maar kan nooit de externe IP geven. :)

fretn

Legacy Member
EyeBallz zei:

Code:
/*
=====================
NET_GetLocalAddress
=====================
*/
void NET_GetLocalAddress( void ) {
        char                            hostname[256];
        struct hostent          *hostInfo;
        int                                     error;
        char                            *p;
        int                                     ip;
        int                                     n;

        if( gethostname( hostname, 256 ) == SOCKET_ERROR ) {
                error = WSAGetLastError();
                return;
        }

        hostInfo = gethostbyname( hostname );
        if( !hostInfo ) {
                error = WSAGetLastError();
                return;
        }

        Com_Printf( "Hostname: %s\n", hostInfo->h_name );
        n = 0;
        while( ( p = hostInfo->h_aliases[n++] ) != NULL ) {
                Com_Printf( "Alias: %s\n", p );
        }

        if ( hostInfo->h_addrtype != AF_INET ) {
                return;
        }

        numIP = 0;
        while( ( p = hostInfo->h_addr_list[numIP] ) != NULL && numIP < MAX_IPS ) {
                ip = ntohl( *(int *)p );
                localIP[ numIP ][0] = p[0];
                localIP[ numIP ][1] = p[1];
                localIP[ numIP ][2] = p[2];
                localIP[ numIP ][3] = p[3];
                Com_Printf( "IP: %i.%i.%i.%i\n", ( ip >> 24 ) & 0xff, ( ip >> 16 ) & 0xff, ( ip >> 8 ) & 0xff, ip & 0xff );
                numIP++;
        }
}

dit komt uit de q3 source maar ik denk niet dat het uw extern IP zal tonen als je achter een router zit (aangezien de functienaam 'localadres' bevat)

om winsock te initialiseren kijk je best eens op articles op gamedev.net (http://www.gamedev.net/reference/list.asp?categoryid=30#298)

(hou er ook rekening mee dat die code onder de gpl released is)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan