Socket——htons htonl ntohl ntohs函数

1.htons()

#include <arpa/inet.h> 

uint16_t htons(uint16_t hostshort); 

htons的功能:

                        将一个无符号短整型数值转换为网络字节序,即大端模式(big-endian)  参数u_short hostshort: 16位无符号整数 返回值:

               TCP / IP网络字节顺序.

htons 是把你机器上的整数转换成“网络字节序”, 网络字节序是 big-endian,也就是整数的高位字节存放在内存的低地址处。 而我们常用的 x86 CPU (intel, AMD) 电脑是 little-endian,也就是整数的低位字节放在内存的低字节处。

举个例子:

                假定你的port是  0x1234,  在网络字节序里 这个port放到内存中就应该显示成  addr addr+1  0x12 0x34  而在x86电脑上,0x1234放到内存中实际是:  addr addr+1  0x34 0x12 htons 的用处就是把实际内存中的整数存放方式调整成“网络字节序”的方式。

 

 

2.htonl()

  简述:  将主机的无符号长整形数转换成网络字节顺序。 

 #include <arpa/inet.h>  

uint32_t htonl(uint32_t hostlong);  

hostlong:主机字节顺序表达的32位数。  

注释:

    本函数将一个32位数从主机字节顺序转换成网络字节顺序。  

返回值: 

       htonl()返回一个网络字节顺序的值。  

  

3.ntohl()

 

ntohl()指的是ntohl函数,是将一个无符号长整形数从网络字节顺序转换为主机字节顺序, ntohl()返回一个以主机字节顺序表达的数。

linux系统  

#include <arpa/inet.h>

uint32_t ntohl(uint32_t netlong);

netlong:一个以网络字节顺序表达的32位数

 

4.ntohs()

ntohs()是一个函数名,作用是将一个16位数由网络字节顺序转换为主机字节顺序

#include <netinet/in.h>

uint16_t ntohs(uint16_t netshort);

netshort:一个以网络字节顺序表达的16位数。

本函数将一个16位数由网络字节顺序转换为主机字节顺序。

 

在Linux系统下:  

#include <arpa/inet.h>  

uint32_t htonl(uint32_t hostlong);  

相关函数:  uint16_t htons(uint16_t hostshort);  uint32_t ntohl(uint32_t netlong);  uint16_t ntohs(uint16_t netshort);  网际协议在处理这些多字节整数时,使用大端字节序。  在主机本身就使用大端字节序时,这些函数通常被定义为空宏。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值