ntohs和htons区别?
一直以来都对这个两个函数含含糊糊的,今天又用到所以特意查看linux的源代码(/include/netinet/in.h)
# if __BYTE_ORDER == __BIG_ENDIAN
/* The host byte order is the same as network byte order,
so these functions are all just identity. */
# define ntohl(x) (x)
# define ntohs(x) (x)
# define htonl(x) (x)
# define htons(x) (x)
# else
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define ntohl(x) __bswap_32 (x)
# define ntohs(x) __bswap_16 (x)
# define htonl(x) __bswap_32 (x)
# define htons(x) __bswap_16 (x)
# endif
# endif
从上面的头文件内容可以看出,ntohs和htons是一样的。如果平台是大字序的(如Pocket PC),则这些函数不作任何转换,只有在平台是小字序时(如X86),这些函数才进行相应的转换,htons和ntohs(以及htonl和ntohl)实际上没有任何区别,都是把字节序反转,只在于使用者对网络端和主机端理解意义的不同。
ntohs和htons区别?相关推荐
- ntohs和htons的区别
虽然注册CSDN已经有好几年了,学习写程序也有两年的时间了.对于绝大数人来说,我还是得菜鸟.平时遇到什么问题也会来到这个平台搜索别人的解答.也从这个平台上获益很多. 今天在公司因为一个问题和同事就关于 ...
- ntohs, ntohl, htons,htonl的比较和详解
在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...
- ntohs, ntohl, htons,htonl
ntohs, ntohl, htons,htonl的比较和详解 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs( ...
- htons(), ntohl(), ntohs(),htons()这4个函数
在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...
- socket绑定的ip为INADDR_ANY 的意义 htonl(INADDR_ANY)(0.0.0.0所有地址、不确定地址、任意地址)(htonl和htons区别)
INADDR_ANY 表示监听0.0.0.0地址,socket只绑定端口,不绑定本主机的某个特定ip,让路由表决定传到哪个ip(0.0.0.0地址表示所有地址.不确定地址.任意地址)(一台主机中如果有 ...
- 网络字节与主机字节转换 htons(), ntohl(), ntohs(),htons() 函数
在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...
- socket编程为什么需要htons(), ntohl(), ntohs(),htons() 函数
在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...
- linux函数库之htons(), ntohl(), ntohs(),htons() 函数
字节序分为大端字节序和小端字节序: 大端字节序: 是指一个整数的高位字节(32-31bit)存储在内存的低地址处,低位字节(0-7bit)存储在内存的高地址处. 小端字节序: 是指一个整数的高位字节( ...
- 为什么需要htons(), ntohl(), ntohs(),htons() 函数
为什么需要htons(), ntohl(), ntohs(),htons() 函数: 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl ...
最新文章
- FORMS变量类型和消息提示
- sql server2008中怎样用sql语句创建数据库和数据表
- navicat无法连接远程mysql数据库_navicat无法远程连接mysql的解决方法
- LeetCode 6038. 向表达式添加括号后的最小结果
- 进程的优先级设置与获取,进程时间
- Nagios配置文件nagios.cfg详解
- 查询性能优化 in and union
- matlab写入二进制文件注意事项
- php的gd怎么打开,CentOS 中PHP开启 GD功能
- 软件项目管理知识点总结
- 复习了C++前几章,做一个ASCII码转换的小程序
- Kettle Spoon入门学习
- iperf工具源码下载、编译、以及测试网络带宽
- 微信排队小程序C语言,排队叫号微信小程序-【请排队】的构思和实现
- 矩阵的乘法与利用矩阵求解线性方程组
- 『地铁交换机作用』地铁交换机用哪个国家的
- L1-039 古风排版 (Java)
- 贪婪洞窟2 素材解密
- 在Github新建项目
- 红木家具之缅甸花梨家具