网络字节序和主机字节序

字节序分为:大端字节序 和 小端字节序
大端字节序:指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处。

小端字节序:指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。

现代PC大多采用小端字节序,小端字节序又称为主机字节序。
大端字节序也称为网络字节序。
当格式化的数据在两台使用不同字节序的主机之间直接传递时,接收端必然会解释错误传递的数据。
解决方法是:
发送端总是把要发送额数据转化成大端字节序数据后再发送,而接收端知道对方传过来的数据总是采用大端字节序,
所以接收端可以根据自身采用的字节序决定是否对接收到的数据进行转换。
提供主机字节序和网络字节序之间转换的四个函数

 

#include<netinet/in.h>
主机字节序转网络字节序(一般用来转换IP地址):unsigned long int htonl(unsigned long int hostlong);
主机字节序转网络字节序(一般用来转换端口号):unsigned short int htons(unsigned short int hostsort);
网络字节序转主机字节序(一般用来转换IP地址):unsigned long int ntohl(unsigned long int netlong);
网络字节序转主机字节序(一般用来转换端口号):unsigned short int ntohs(unsigned short int netshort);
 

struct sockaddr_in saddr,caddr;  //AF_INET域地址结构
memset(&saddr,0,sizeof(saddr));  //清空变量中的内容
saddr.sin_family = AF_INET;      //TCP/IPV4协议族 
saddr.sin_port = htons(80);      //主机字节序转网络字节序
saddr.sin_addr.s_addr = inet_addr("192.168.1.113");  //将点分十进制字符串表示的IPv4地址转换成用网络字节序整数表示的ipv4地址。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值