7、网络编程中的字节序与套接字函数详解

网络编程中的字节序与套接字函数详解

1. 字节序函数

在网络编程里,数字表示是个关键问题。TCP/IP 协议规定,协议头中的二进制整数需以最高有效字节在前的方式表示,这就是网络字节序。不同的操作系统和硬件平台,存储数字的方式有所不同,像大端序(Big Endian)和小端序(Little Endian)。要是把网络字节序的 TCP/IP 数字存到本地主机,而本地主机存储整数的方式和网络字节序不同,存储的值就会错乱。

不过,Berkeley 团队在套接字接口里加入了几个转换函数,解决了这个问题。这些函数能自动在网络字节序和本地主机的原生字节序之间转换 16 位和 32 位的短整数与长整数。相关函数如下:
- htons() :把本地主机的原生字节序转换为网络字节序(用于短整数)。
- ntohs() :把网络字节序转换为本地主机的原生字节序(用于短整数)。
- htonl() :把本地主机的原生字节序转换为网络字节序(用于长整数)。
- ntohl() :把网络字节序转换为本地主机的原生字节序(用于长整数)。

在某些情况下,调用这些函数并非必要。比如,若某个值本身就是网络字节序,就无需转换。要是遇到值乱码的问题,得确认返回的值是否符合应用程序的需求。

2. 套接字函数的使用

依据需求,应用程序可能只用到部分套接字函数,也可能全部都用,甚至会用到未列出的函数。下面介绍典型 Linux 系统中的套接字函数,包括用法、参数、返回值,还会给出示例代码。

2.1 核心函
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值