IP转换应用

来源:互联网 发布:装修全包 半包 知乎 编辑:程序博客网 时间:2024/06/08 07:45

再看本博文时请先查看本博文http://blog.csdn.net/u013711616/article/details/52218112

代码:
代码一:

/*************************************************************************    > File Name: inet.c    > Author:  ************************************************************************/#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){    struct in_addr ip, local, network;    char addr1[] = "192.168.1.1";    char addr2[] = "255.255.255.255";    char addr3[] = "192.16.1";    char *str1 = NULL, *str2 = NULL;    int err = 0;    //将字符串IP转换为二进制IP    err = inet_aton(addr1, &ip);    if (err)    {        printf("inet_aton %s value is: 0x%02X\n",addr1, ip.s_addr);    }    else    {        printf("inet_aton %s error\n", addr1);    }    //将字符串IP转化为二进制IP    ip.s_addr = inet_addr(addr1);    if (err = -1)    {        printf("inet_addr:string %s value is: 0x%02X\n", addr1, ip.s_addr);    }    else    {        printf("inet_addr:string %s error\n", addr1);    }    //inet_addr不能装换255.255.255.225形式的IP地址    ip.s_addr = inet_addr(addr2);    if (ip.s_addr != -1)    {        printf("inet_addr:string %s value is:0x%02X\n", addr2, ip.s_addr);    }    else    {        printf("inet_addr:string %s err\n", addr2);    }    //inet_ntoa 先测试192.168.5.1,再测试255.255.255.255    ip.s_addr = 192<<24|168<<16|1<<8|1;    str1 = inet_ntoa(ip);    ip.s_addr = 255<<24|255<<16|255<<8|255;    str2 = inet_ntoa(ip);    printf("inet_ntoa:ip:0x%02X string1 %s, pre is:%s \n",             ip.s_addr, str2, str1);    //测试函数inet_addr    ip.s_addr = inet_addr(addr3);    if (err != -1)    {        printf("inet_addr:string %s value is:0x%02X\n", addr3, ip.s_addr);    }    else    {        printf("inet_addr:string %s err\n", addr3);    }    str1 = inet_ntoa(ip);    printf("inet_addr:string %s ip:0x%02X\n", str1, ip.s_addr);    //测试获取本机IP地址    inet_aton(addr1, &ip);    local.s_addr = htonl(ip.s_addr);    local.s_addr = inet_lnaof(ip);    str1 = inet_ntoa(local);    printf("inet_lnaof:string %s ip:0x%02X\n", str1, local.s_addr);    //测试函数inet_netof 获取本机地址    network.s_addr = inet_netof(ip);    printf("inet_netof:value:0x%02X \n", network.s_addr);    return 0;}

代码二:

/*************************************************************************    > File Name: inetPton.c    > Author:  ************************************************************************/#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <stdio.h>#include <string.h>#define ADDRLEN 16int main(int argc, char *argv[]){    struct in_addr ip;    char ipstr[] = "192.168.1.1";    char addr[ADDRLEN];    const char *str = NULL;    int err = 0;    //测试inet_pton将192.168.1.1转换为二进制形式    err = inet_pton(AF_INET, ipstr, &ip);    if (err > 0)    {        printf("inet_pton:ip,%s value is :0x%02X\n", ipstr, ip.s_addr);    }    //测试函数inet_ntop 将192.168.1.1转换为字符串格式    ip.s_addr = htonl(192<<24|168<<16|12<<8|255);    //将二进制网络字节序192.168.12.255转换为字符串    str = (const char *)inet_ntop(AF_INET, (void*)&ip,             (char*)&addr[0], ADDRLEN);    if (str)    {        printf("inet_ntop:ip,0x%02X is %s\n", ip.s_addr, str);    }    return 0;}
0 0
原创粉丝点击