linux socket程序中 获取 IP地址

本文介绍了一个使用C++在Linux环境下获取设备(如eth0)本地IP地址的方法。通过创建socket并利用ioctl函数与SIOCGIFADDR命令,该方法能够从网络接口中检索到IP地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. QString GetLocalIp()  
  2. {  
  3.   
  4.     int sock_get_ip;  
  5.     char ipaddr[50];  
  6.   
  7.     struct   sockaddr_in *sin;  
  8.     struct   ifreq ifr_ip;     
  9.   
  10.     if ((sock_get_ip=socket(AF_INET, SOCK_STREAM, 0)) == -1)  
  11.     {  
  12.          printf("socket create failse...GetLocalIp!/n");  
  13.          return "";  
  14.     }  
  15.      
  16.     memset(&ifr_ip, 0, sizeof(ifr_ip));     
  17.     strncpy(ifr_ip.ifr_name, "eth0"sizeof(ifr_ip.ifr_name) - 1);     
  18.    
  19.     if( ioctl( sock_get_ip, SIOCGIFADDR, &ifr_ip) < 0 )     
  20.     {     
  21.          return "";     
  22.     }       
  23.     sin = (struct sockaddr_in *)&ifr_ip.ifr_addr;     
  24.     strcpy(ipaddr,inet_ntoa(sin->sin_addr));         
  25.       
  26.     printf("local ip:%s /n",ipaddr);      
  27.     close( sock_get_ip );  
  28.       
  29.     return QString( ipaddr );  
  30. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值