linux下inet_addr函数,Linux下两个网络函数inet_addr和inet_network (2008-09-01 01:42)
先看看这两个函数的真面目,在说说我遇到的问题
unsigned int inet_addr(const char *cp);
unsigned int inet_network(const char *cp);
两个函数都是将字符ip转化成二进制地址
但是,前面一个是要考虑大小端的,如果机器本身是小端在前的话,对于255.0.0.0,前者的转化结果将会是0xff,而不是实际想得到的0x000000ff,当然这两个值本身意义上是一样的.
最近做一个通过ip和mask得到网段的函数,就在x86和ixp425上遇到 inet_addr的大小端问题,最后用inet_network给屏蔽了,因为后者是主机序列,不管机器的大小端.
贴如下代码
1输入mask 得到掩码位数
#include "stdio.h"
int main(int agrc,char *argv[])
{
int i = 0;
printf("%s\n",argv[1]);
unsigned int prefix = inet_addr(argv[1]);
printf("%x\n",prefix);
while (((prefix)& 0x1) == 0){
i++;
printf("%d\n",i);
prefix = prefix>>1;
}
return 32 - i;
}
输入255.255.255.0
在大端的模式下得到掩码位数是24
小端模式下无效
2通过输入ip 和mask 得到网段
#include "stdio.h"
int main(char agrc,char *argv[])
{
int i,x;
printf("%s\n",argv[1]);
printf("%s\n",argv[2]);
unsigned int ip = inet_network(argv[1]);
unsigned int prefix = inet_network(argv[2]);
printf("%8x %8x\n",ip,prefix);
x=0;
for(i=0;i<32;i++)
{
if(((prefix)& 0x1)== 0)
{
x++;
printf("%d %x\n",x,0x1<
ip &=(0xffffffff<
prefix = prefix>>1;
}
else
break;
}
printf("%x\n",ip);
return 0;
}
因为是主机序 所以没有大小端 任何机子都是一样的
输入192.168.0.1 255.255.255.0
得到192.168.0.0
linux下inet_addr函数,Linux下两个网络函数inet_addr和inet_network (2008-09-01 01:42)相关推荐
- linux下wait函数,Linux wait函数详解
wait和waitpid出现的原因 SIGCHLD --当子进程退出的时候,内核会向父进程SIGCHLD信号,子进程的退出是个异步事件(子进程可以在父进程运行的任何时刻终止) --子进程退出时,内核将 ...
- linux哈希函数,OpenSSL下hash函数
OpenSSL下hash函数:是不可逆的函数,它的输入可以是任意长度的字节流.它的输出是固定大小的,hash函数的作用就是给你的文件产生一个摘要,它是独一无二的. 通过OpenSSL提供FTP+SSL ...
- linux的scandir函数,linux C++ scandir 的使用
() 头文件 #include () 函数定义 int scandir(const char *dir,struct dirent **namelist,int (*filter)(const voi ...
- linux c 绝对值函数,linux c 简介
--- title: linux c 简介 date: 2020-07-19 updated: 2020-07-19 --- # Preface # todo linux c http://blog. ...
- linux使用模板函数,Linux常用C函数
Linux常用C函数Tag内容描述: 1.Linux常用C函数 接口处理篇 accept(接受socket连线) 相关函数 socket,bind,listen,connect 表头文件 #inclu ...
- linux i2c 读写函数,Linux下读写芯片的I2C寄存器
要想在Linux下读写芯片的I2C寄存器,一般需要在Linux编写一份该芯片的I2C驱动,关于Linux下如何编写I2C驱动,前一篇文章<手把手教你写Linux I2C设备驱动>已经做了初 ...
- linux下dup函数,Linux dup dup2函数理解
在linux中,我们需要复制文件描述符,下面是我对文件描述符的理解 int dup(int fd); // 复制一个已经存在的文件描述符,如果成功,返回复制成功后的文件描述符,失败返回-1 int d ...
- linux中iconv函数,Linux下编码转换(iconv函数族)
转自:http://www.linuxdiyf.com/viewarticle.php?id=45164 在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实 ...
- linux拷贝文件函数,linux下文件操作的各个函数
作者:HoytEmail:hoytluo@21cn.com 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 --------- ...
最新文章
- 经典设计模式——策略模式
- Error:Kotlin: Module was compiled with an incompatible version of Kotlin
- java实现一个gui面板_JAVA GUI自定义JPanel画板背景
- 随便说说程序员团队精神的荣辱与共
- linux模拟磁盘和用户管理总结
- java8 追加文字到文件_使用Stream-Java 8替换文件中的文本
- ubuntu上安装rsync+sersync
- Node-ES6模块化
- M文件打包成jar包详解
- 第16周项目3--用函数指针调用函数(吃饭,睡觉,打豆豆)
- 国内IDC数据中心星级评判标准怎么划分
- 【Flask】 Not Found: /favicon.ico 项目logo图标加载
- 2020-09-07-中国人寿两年java岗位一面
- 无线网技术——复习(2)
- 工程建设项目业务学习
- uni-app HBuilderX 工程转换 vue-cli 工程
- Linux xargs 命令
- 小白都能学会的Python基础 第二讲:Python基础知识
- oracle ALTER 用法
- 二阶龙格库塔公式推导_二阶龙格—库塔公式.PPT