linux 下ip地址转换
来源:互联网 发布:ug文字雕刻加工编程 编辑:程序博客网 时间:2024/05/18 22:41
/*linux 下IP地址转换*/
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
/*1.整形转换成字符串格式*/
void ipv4_int_to_str(char *ipv4, unsigned int a)
{
struct in_addr addr;
addr.s_addr = a;
char *ip = inet_ntoa(addr);
strcpy(ipv4, ip);
}
void ipv6_int_to_str(char *IPdotdec, unsigned int ipv6_addr[])
{
struct in6_addr s;
int i;
int ipv6[4];
for(i = 0; i < 4; i++) {
ipv6[i] = htonl(ipv6_addr[i]);
}
memcpy(s.s6_addr,ipv6,4*sizeof(int));
inet_ntop(AF_INET6, (void *)&s, IPdotdec, INET6_ADDRSTRLEN);
}
/* 2.字符串转换成整形格式*/
void ipv4_str_to_int(char *ipv4, struct in_addr *s)
{
/*也可以使用inet_addr函数*/
inet_pton(AF_INET, ipv4, (void*)s);
}
void ipv6_str_to_int(char *ipaddr, unsigned int *ipv6)
{
struct in6_addr dst;
inet_pton(AF_INET6, ipaddr, (void *)&dst);
memcpy(ipv6, dst.s6_addr, sizeof(dst.s6_addr));
}
/*子网掩码地址, 转换为一个CIDR值*/
int mask_to_cidr(u_int32_t mask)
{
int i, n = 0,bits;
bits = sizeof(u_int32_t) * 8;
for(i = bits - 1; i >= 0; i--) {
if (mask & (0x01 << i)) {
n++;
}
}
return n;
}
int main(int argc, char **argv)
{
/*整形转换为字符型*/
char ipv4_s[30];
ipv4_int_to_str(ipv4_s, 84215041);
printf("ipv4 string addr:%s\n", ipv4_s);
char ipv6_s[50];
unsigned int ipv6_i[4];//以一个无符号整形数组存放ipv6地址
ipv6_i[0] = 0x20140000;
ipv6_i[1] = 0x0;
ipv6_i[2] = 0x0;
ipv6_i[3] = 0x1;
ipv6_int_to_str(ipv6_s, ipv6_i);
printf("ipv4 string addr:%s\n", ipv6_s);
/*字符类型转换成整形*/
strcpy(ipv4_s,"192.168.20.100");
struct in_addr s;
ipv4_str_to_int(ipv4_s,&s);
printf("ipv4 integar addr:%x\n",s.s_addr);
strcpy(ipv6_s,"2014::1");
unsigned int ipv6[4];
ipv6_str_to_int(ipv6_s, ipv6);
int i;
printf("ipv6 integar addr:");
for(i=0;i<4;i++) {
printf("%x ",htonl(ipv6[i]));
}
printf("\n");
return 0;
}
- linux 下ip地址转换
- Linux下网络IP地址的转换函数
- Linux下网络IP地址的转换函数
- inet_pton()&inet_ntop(),Linux下的IP地址转换函数
- Linux下网络IP地址的转换函数
- Linux下网络IP地址的转换函数
- linux--IP地址转换函数
- linux下编程实现将域名地址转换为IP地址
- linux下修改ip地址
- linux下修改ip地址
- linux下配置IP地址
- Linux下配置IP地址
- linux下修改IP地址
- linux下配置ip地址
- linux下查看IP地址
- Linux下IP地址设置
- linux下配置IP地址
- Linux下配置ip地址
- 认识移动互联网与微信—西安羚羊网络内部学习资料
- android读写xml知识点
- acd the cover circle(分情况讨论)
- Linux压缩文件和打包文件
- 密码学基础知识-拉格朗日插值定理
- linux 下ip地址转换
- HelloWorld
- iOS实现动态创建按钮
- Qt windows qmysql Driver not loaded
- PAT A 1065. A+B and C (64bit) (20)
- C++中的volatile(Primer读书笔记)
- 城堡问题
- 精通javascript读书笔记——“引用指向的只能是具体的对象,而不是另一个引用”的理解
- 创建SharePoint 2010 Timer Job