🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #385

Re: znajdowanie lokalnych adresów IP

#385
From: Cezary H. Noweta
Date: Wed, 22 Sep 1999 14:41
62 lines
2625 bytes
Witam,

"Arkadiusz Miśkiewicz" wrote:
> Piotr Kucharski <chopin@sgh.waw.pl> wrote:
> > Arkadiusz Miśkiewicz <misiek@pld.org.pl> wrote:
> >> Jak w C sprawdzić jakie adresy IP ma lokalna maszyna.
> [...]
> > man gethostbyname
> gethostbyname(char *name);
> akurat nie znam nazwy ... (używanie name zwróconego przez gethostname()
> odpada bo chcę znaleść wszystkie lokalne IP a nie tylko te umieszczone
> w DNSie...
> jakieś inne propozycje ?

------
#include <sys/types.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <stdio.h>

#define MAX_INTERFACES 10

int main()
{
  unsigned char buff[MAX_INTERFACES * sizeof(struct ifreq)], *ip;
  struct ifconf conf;
  int sockfd, i;

  conf.ifc_len = sizeof(buff);
  conf.ifc_buf = buff;
  if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ||
       ioctl(sockfd, SIOCGIFCONF, &conf) < 0 ) {
    fprintf(stderr, "Error while intializing\n");
    return(-1);
  }

  printf("Nof interfaces: %d\n", i = conf.ifc_len / sizeof(struct ifreq));
  while ( i-- ) {
    ip = conf.ifc_req->ifr_addr.sa_data + 2;
    printf("Addres: %d:%d:%d:%d\n",
           (int)ip[0],
           (int)ip[1],
           (int)ip[2],
           (int)ip[3]);
    conf.ifc_req++;
  }

  close(sockfd);

  return(0);
}
------

Definicja struktur ifreq i ifconf znajduje sie w <linux/if.h>,
a struktury sockaddr w <linux/socket.h>

  -- pozdrawiam

-- 
Cezary H. Noweta                 90-237 LODZ, ul. J.Matejki 34/38 POLAND
(chn@irys.usun.drugiitrzeciczlon.uni.lodz.pl)    +48 42 6356013, 6356012
University of Lodz - Main Library                            fax 6781678
Technical Details
Message-ID: <37E8EAA5.3306613E@irys.usun.drugiitrzeciczlon.uni.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!not-for-mail
References: <sorir7.pva.ln@linstar.ipv6.zsz2.starachowice.pl> <7rp6fv$2ql$2@absolut.sgh.waw.pl> <dr3as7.jb6.ln@linstar.ipv6.zsz2.starachowice.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!not-for-mail
From: "Cezary H. Noweta" <chn@irys.usun.drugiitrzeciczlon.uni.lodz.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: znajdowanie lokalnych adresów IP
Date: Wed, 22 Sep 1999 16:41:41 +0200
Organization: Biblioteka Uniwesytecka w Lodzi
Lines: 62
Message-ID: <37E8EAA5.3306613E@irys.usun.drugiitrzeciczlon.uni.lodz.pl>
References: <sorir7.pva.ln@linstar.ipv6.zsz2.starachowice.pl> <7rp6fv$2ql$2@absolut.sgh.waw.pl> <dr3as7.jb6.ln@linstar.ipv6.zsz2.starachowice.pl>
NNTP-Posting-Host: chncc.lib.uni.lodz.pl
Mime-Version: 1.0
X-Trace: flis.man.torun.pl 938011344 20482 212.191.71.33 (22 Sep 1999 14:42:24 GMT)
X-Complaints-To: abuse@man.torun.pl
NNTP-Posting-Date: 22 Sep 1999 14:42:24 GMT
X-Accept-Language: pl,en
X-Mailer: Mozilla 4.61 [en] (Win95; I)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit