Linux C通过socket获取网络设备ip地址的方法

原创 2018年04月16日 16:14:50


#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <net/if.h>

int get_ip(const char *ifname, char *ip)
{
    int sock_get_ip;
    int s32Ret = 0;
    char ipaddr[48];
    struct sockaddr_in *sin;
    struct ifreq_ifr;
    
    if((sock_get_ip = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
    {
        printf("socket create failed!\r\n");
        return -1;
    }
    
    memset(&ifr, sizeof(ifr));
    memcpy(ifr.ifr_name, ifname, strlen(ifname));
    
    if(ioctl(sock_get_ip, SIOCGIFADDR, &ifr) <0)
    {
        perror("ioctl error!\n");
        s32Ret = -2;
        goto FAILED;
    }
    
    sin = (struct sockaddr_in*)ifr.ifr_addr;
    if(NULL != ip) strcpy(ip, inet_ntoa(sin->sin_addr));
    
FAILED:
    close(sock_get_ip);
    return s32Ret;
}

int main(int argc, char *argv[])
{
    char ip[32] = { 0 };
    int s32Ret = 0;

    char *ifnet = "eth0";
    s32Ret = get_ip(ifnet, ip);
    printf("==ret:%d if:%s ip:%s==\n", s32Ret, ifnet, ip);

    ifnet = "lo";
    s32Ret = get_ip(ifnet, ip);
    printf("==ret:%d if:%s ip:%s==\n", s32Ret, ifnet, ip);
}


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liusaoren/article/details/79962093

TCP/IP/UDP Socket通讯开发实战 适合iOS/Android/Linux

本课程适合中高级学员,适用于从事iOS/Android/嵌入式Linux网络通讯开发的学员。实战案例可用于无人机,安防,直播等。从Linux音频,视频采集,到TCP/IP UDP Socket基础概念,网络编程接口介绍,POSIX线程封装,私有协议定义,开发,服务器模型,客户端编程等详细实战讲解,整个过程,涵盖iOS,Android ,Mac OS嵌入式Linux网络编程核心的大量实用场景。让学员能够快速掌握相关知识,融汇贯通掌握网络通讯开发核心知识。 付费学员加入QQ群,可获得本人未来1~3年学习过程中的专业指导解答。第三节课第7分15秒有QQ群,欢迎付费学员加入探讨技术问题。
  • 2016年06月28日 21:22

Linux socket 获得本地IP和广播地址

#include #include #include #include #include #include #include int main(int argc, char *argv...
  • yangbingzhou
  • yangbingzhou
  • 2016-01-14 14:57:33
  • 2086

Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip

获取本地 ip 地址,mac,通过域名获取对应的 ip, 是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数), 直接上代码: #include #include #include...
  • chinaeran
  • chinaeran
  • 2014-12-11 20:15:03
  • 5606

SOCKET 编程 获取本机IP 地址

源程序: #include #include #include #include #include #include #include #include #include #inc...
  • qustdjx
  • qustdjx
  • 2012-07-15 11:55:19
  • 7402

socket编程之---------获取客户端主机名和IP地址

TCP 服务器端:package com.wodwl.example;import java.io.IOException;import java.net.InetAddress;import jav...
  • wodwl
  • wodwl
  • 2009-08-04 19:08:00
  • 16164

Linux下C实现通过域名得到IP

一直想学Linux网络编程 并且固执的要用c来写  认为这样才是最纯正牛x的结果c写网络太难了.....我想实现一个http的简单的get操作居然没有找到一个例子气死我了Linux下的学习资料太少  ...
  • zuopai
  • zuopai
  • 2008-04-01 22:45:00
  • 2815

通过SOCKET 得到IP地址

int   getsockname(         SOCKET   s,                                                 struct   sock...
  • nightelve
  • nightelve
  • 2008-01-24 15:46:00
  • 7790

在socket编程中,如何获取连接另一端(客户端)的ip地址,使用accept或者getpeername

//这段代码没有实际的功能,只是为了获取连接另一端的ip地址 #include #include #include #pragma comment(lib, "wsock32") u...
  • gukesdo
  • gukesdo
  • 2011-10-20 09:27:42
  • 26724

linux C获取公网IP

#include #include #include #include #include #include #include #include #include #...
  • shexujia
  • shexujia
  • 2014-01-16 11:51:12
  • 1302
收藏助手
不良信息举报
您举报文章:Linux C通过socket获取网络设备ip地址的方法
举报原因:
原因补充:

(最多只允许输入30个字)