编程获取本地ip地址

ccsu_dog 2013-07-15 10:05:11
linux 下使用ioctl ok
window下使用gethostname和gethostbyname 但是这个方法只能一股脑的把ip地址全部获取到 不能加以区分判断 我想用一种方法能够获取到ip地址还能根据其他信息区分这些ip 例如:我能 只选出eth0 的ip
(使用system("ipconfig");输出到文本然后去挑选似乎也不是很好的方法)

希望各位给个方法 或相关资料 Orz
...全文
98 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKATE11 2013-07-15
  • 打赏
  • 举报
回复
#include <iostream> using namespace std; #include "winsock2.h" #pragma comment(lib,"ws2_32.lib") #include <windows.h> void main() { //初始化:如果不初始化,以下代码将无法执行 WSAData data; if(WSAStartup(MAKEWORD(1,1),&data)!=0) { cout<<"初始化错误,无法获取主机信息..."<<endl ; } char host[255]; //获取主机名:也可以使用GetComputerName()这个函数 if(gethostname(host,sizeof(host))==SOCKET_ERROR) { cout<<"无法获取主机名..."<<endl; } else { cout<<"本机计算机名为:"<<host<<endl; } //获取计算机IP:gethostbyname也需要初始化(上面已初始化) struct hostent *p=gethostbyname(host); if(p==0) { cout<<"无法获取计算机主机名及IP..."<<endl; } else { //获取本机计算机名 //cout<<"本机计算机名为:"<<p->h_name<<endl; //本机IP:利用循环,输出本机所有IP for(int i=0;p->h_addr_list[i]!=0;i++) { struct in_addr in; memcpy(&in,p->h_addr_list[i],sizeof(struct in_addr)); cout<<"第"<<i+1<<"块网卡的IP为:"<<inet_ntoa(in)<<endl; } } WSACleanup(); cin.get(); }
ccsu_dog 2013-07-15
  • 打赏
  • 举报
回复
引用 1 楼 SKATE11 的回复:
谢谢~ But window下使用gethostname和gethostbyname 但是这个方法只能一股脑的把ip地址全部获取到 不能加以区分判断 我想用一种方法能够获取到ip地址还能根据其他信息区分这些ip 例如:我能 只选出eth0 的ip

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧