Linux中ip地址结构和ip地址的转换

Posted shelmean

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中ip地址结构和ip地址的转换相关的知识,希望对你有一定的参考价值。

 ip地址结构

struct sockaddr_in 
{
    sa_family_t    sin_family; /* address family: AF_INET */
    in_port_t      sin_port;   /* port in network byte order */
    struct in_addr sin_addr;   /* internet address */
};

/* Internet address. */
struct in_addr 
{
    uint32_t       s_addr;     /* address in network byte order */
};

点分十进制ip转换:

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <arpa/inet.h>

int 
main()
{
    const char *ip_str = "192.168.1.1";
    //const char *ip_str = "255.255.255.255";
    //const char *ip_str = "0.0.0.0";
    struct in_addr in;
    memset(&in, 0, sizeof(struct in_addr));
    in.s_addr = inet_addr(ip_str);    
    printf("ip addr is:%u\\n", in.s_addr);
    printf("ip addr is:%s\\n", inet_ntoa(in));
    memset(&in, 0, sizeof(struct in_addr));
    inet_aton(ip_str, &in);
    printf("ip addr is:%s\\n", inet_ntoa(in));
    return 0;
}

结果:

shelmean:[~]$ ./a.out 
ip addr is:16885952
ip addr is:192.168.1.1
ip addr is:192.168.1.1

 

 

以上是关于Linux中ip地址结构和ip地址的转换的主要内容,如果未能解决你的问题,请参考以下文章

Linux下获取网络接口ip地址

从ip addr add和ifconfig的区别看linux网卡ip地址的结构

从ip addr add和ifconfig的区别看linux网卡ip地址的结构

Linux如何配置ip地址

linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换

(四十七)socket编程——socket引入网络字节序IP地址转换函数sockaddr数据结构介绍