Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Oma IP

Sivun loppuun

ZupaDupa [30.05.2005 14:45:41]

#

Kuinka selvittää C/C++:lla oman koneen IP. Käyttöjärjestelmänä OpenBSD 3.5 ja kääntäjänä gcc 2.95.3.

Linkku [30.05.2005 15:01:14]

#

Ainakin Linuxissa on /sbin/ifconfig, joka tulostelee ip:n ja muuta...

ZupaDupa [30.05.2005 15:47:15]

#

Sama löytyy kyllä OpenBSD:stä. Mutta ajattelin löytyisikö esim. jotain funktiota joka palauttaisi IP:n. Säästyisi tuo parseroinnin vaiva... laiska kun olen :)

arcatan [30.05.2005 16:10:54]

#

#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
#include <unistd.h>

int main (void)
{
        char hostname[256];
        struct hostent *hostent;

        if (-1 == gethostname(hostname, 256)) {
                perror("gethostname");
                return 1;
        }

        hostent = gethostbyname(hostname);
        if (NULL == hostent) {
                herror("gethostbyname");
                return 1;
        }

        printf( "Hostname: %s\n", hostname );
        printf( "IP: %s\n", inet_ntoa( *((struct in_addr *) hostent->h_addr_list[0])) );
        return 0;
}

Yllä olevaa voi kokeilla, näyttäisi toimivan ainakin NetBSD:llä. Tuo perustuu koneen hostnameen, joten se ei välttämättä toimi aina täydellisesti.

Linkku [30.05.2005 21:18:38]

#

Jep, toi koodi tulostaa 127.0.0.1 ja localhost.

arcatan [31.05.2005 08:10:33]

#

Voisit tietys yrittää avata yhteyden johonkin ja katsoa socketin IP:n. Ei kovin kätevää ja toimivaa tosin.

renni [01.06.2005 01:21:17]

#

Tai vois katsoa vaikka ifconfigin koodista mallia.

arcatan [01.06.2005 09:20:44]

#

renni kirjoitti:

Tai vois katsoa vaikka ifconfigin koodista mallia.

Epäilen tosin, että tämä ei välttämättä ole kovin porttaantuva ehdotus. Vaikka mistäpä sen tietää...

tomaattigeeni [03.06.2005 12:38:02]

#

Voihan sen ifconfiging outputin tallentaa jonneki muuttujaan ja sieltä greppailla IP:n

renni [04.06.2005 01:35:31]

#

Veikkaa että ifconfigin ratkaisu on melko porttautuva, toimii kaikissa *nixeissä ja winkussa, ehkä muuallakin?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta