//参数:
ipbuf :存放得到的IP地址列表的数组,实际大小由bufcount指定。
bufcount:想要得到的IP地址列表的个数。
#ifdef _WIN32
#include <winsock2.h>#include <Ws2tcpip.h>#pragma comment(lib,"ws2_32.lib")
#else
#include <sys/types.h>#include <sys/socket.h>#include <sys/ioctl.h>#include <net/if.h>#include <net/if_arp.h>#include <arpa/inet.h>#include <unistd.h>
#endif
int getselfiplist(unsigned long ipbuf[],int bufcount){ int i,count=0;#ifdef _WIN32 char hostname[128]; struct hostent* inaddrs; if(gethostname(hostname,128)==0) { inaddrs=gethostbyname(hostname); if(inaddrs) { count=inaddrs->h_length/sizeof(in_addr); if(count>bufcount)count=bufcount; for(i=0;i<count;i++) { ipbuf[i]=*(unsigned long*)inaddrs->h_addr_list[i]; } } }#else int sock; struct sockaddr_in sin; struct ifreq ifr; sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock>=0)//!<0 { if(bufcount>100)bufcount=100; for(i=0;i<bufcount;i++) { sprintf(ifr.ifr_name,"eth%d",i); if(ioctl(sock,SIOCGIFADDR,&ifr)<0) break; ::memcpy(&sin, &ifr.ifr_addr, sizeof(sin)); ipbuf[count++]=sin.sin_addr.s_addr; } close(sock); }#endif return count;}
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18