Portál AbcLinuxu, 13. května 2025 16:52

Dotaz: vlastní IP adresa - C

24.12.2005 10:54 Martin Tůma | skóre: 39 | blog: RTFM | Praha
vlastní IP adresa - C
Přečteno: 223×
Odpovědět | Admin

Jak co nejjednoduššeji získat v C vlastní IP adresu(adresy)? Hledám to už asi hodinu a na nic použitelnýho jsem nenarazil...

Každý má právo na můj názor!
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.12.2005 10:56 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: vlastní IP adresa - C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Řekl bych, že to nebude zrovna jednoduché, protože můžeš mít více síťových rozhrahí (lo,eth*,ra*,...)
24.12.2005 11:31 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: vlastní IP adresa - C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podívejte se do zdrojáků iproute2, jak to dělá příkaz ip.
Luboš Doležel (Doli) avatar 24.12.2005 11:44 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: vlastní IP adresa - C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Snadno:
ifreq requestBuffer[20];
ifconf ifc;
extern int socket;

ifc.ifc_len = sizeof(requestBuffer);
ifc.ifc_buf = (caddr_t)requestBuffer;
ioctl(socket, SIOCGIFCONF, &ifc);
24.12.2005 11:53 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: vlastní IP adresa - C

Můžeš prosím trošku rozepsat, jak to má fungovat?

Každý má právo na můj názor!
Luboš Doležel (Doli) avatar 24.12.2005 12:11 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: vlastní IP adresa - C
Otevřít si socket a zavolat tohle...získáte tím seznam adres.

V ifreq.ifr_addr.sa_family máte typ objektu: AF_LINK, AF_INET, AF_INET6... AF_LINK představuje interface (s určitým jménem: ifr_name) a AF_INET představuje IPv4 adresu (k interface s určitým jménem).

Pokud je typ AF_LINK, ifreq.ifr_addr lze castnout na typ sockaddr_dl* a v sdl_type je typ rozhraní (třeba IFT_LOOP). Pokud je to typ AF_INET, ifreq.ifr_addr lze castnout na sockaddr_in*.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.