Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Get list of all IP addresses

Reply
Thread Tools

Get list of all IP addresses

 
 
svirdi
Guest
Posts: n/a
 
      08-08-2006
I have been trying to get all ip addresses from all interfaces, with
the code listed below.
However, all I get is the 1st IP only. I have configured 2 IPs on a
single interface, I want to get both from my c++ code.
thanks
svirdi

#include <unistd.h>
#include <stropts.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <net/if.h>
#include <sys/ioctl.h>
//#include <sys/sockio.h>


int main(int argn,char** argv)
{
int sock,n;
struct ifreq *ifr;
struct ifconf ifc;
char buf[1024],addres[16];
unsigned char* adr;


sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
// sock = socket(2, 2, 0);
printf("sock=%d\n", sock);


if (sock == -1)
{
printf("There is trouble of sock!! Exiting\n\n");
return 0;
}


ifc.ifc_buf = buf;
//ifc.ifc_len = 1024;


int retVal = ioctl(sock, SIOCGIFCONF, &ifc);
printf("retval ioctl(sock, SIOCGIFCONF, &ifc)=%d\n\n", retVal);



if (retVal < 0)
{
printf("There is trouble with ioctl\n\n");
close (sock);
return 0;
}


n = ifc.ifc_len/sizeof(struct ifreq);


for (ifr = ifc.ifc_req; n > 0; n--, ifr++)
{
int rval = ioctl( sock, SIOCGIFADDR, ifr);
printf(" ioctl( sock, SIOCGIFADDR, ifr) rval = %d\n",
rval);


if (ifr->ifr_addr.sa_family == AF_INET ||
ifr->ifr_addr.sa_family == AF_INET6)
{
adr = reinterpret_cast<unsigned
char*>(ifr->ifr_ifru.ifru_addr.sa_data+2);


snprintf(addres,16,"%i.%i.%i.%i",adr[0],adr[1],adr[2],adr[3]);
printf("%s = %s\n",ifr->ifr_name,addres);
}
}
close(sock);
return 0;
}

 
Reply With Quote
 
 
 
 
Victor Bazarov
Guest
Posts: n/a
 
      08-08-2006
svirdi wrote:
> I have been trying to get all ip addresses from all interfaces, with
> the code listed below.
> However, all I get is the 1st IP only. I have configured 2 IPs on a
> single interface, I want to get both from my c++ code.
> [..]


We cannot help you with that. Whatever mechanism you use to get all
IP addresses, it has nothing to do with C++. Neither the language nor
the library has any means for Internet communication, it is all done
using the functionality provided by your OS. Ask in the OS newsgroup.

V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask


 
Reply With Quote
 
 
 
 
Default User
Guest
Posts: n/a
 
      08-08-2006
svirdi wrote:

> I have been trying to get all ip addresses from all interfaces, with
> the code listed below.
> However, all I get is the 1st IP only. I have configured 2 IPs on a
> single interface, I want to get both from my c++ code.
> thanks
> svirdi
>
> #include <unistd.h>
> #include <stropts.h>
> #include <stdio.h>
> #include <stdlib.h>
> #include <sys/socket.h>
> #include <net/if.h>
> #include <sys/ioctl.h>


I recommend comp.unix.programmer.




Brian
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to implement a firewall for Windows platform that blocks based on Mac addresses instead of IP addresses cagdas.gerede@gmail.com C Programming 1 12-07-2006 04:30 AM
Physical Addresses VS. Logical Addresses namespace1 C++ 3 11-29-2006 03:07 PM
Importing a list of existing addresses into a newly created "List" Dan Firefox 2 05-10-2005 07:50 PM
Command or script to get a list of email addresses Deboo Perl Misc 4 08-05-2003 09:22 PM
Re: How to get all IP addresses in python? Steve Pinard Python 1 07-14-2003 06:20 PM



Advertisments