Linux网络编程--主要系统调用函数

本文详细介绍了Linux网络编程中的字节顺序和转换函数,包括大小端模式、网络字节顺序以及对应的转换函数。接着讲解了inet系列函数,如inet_aton、inet_addr等,用于网络地址的格式转换。最后,讨论了套接字属性,如getsockopt和setsockopt函数,以及套接字选项如SO_KEEPALIVE、SO_REUSEADDR等,并简要提及了多路复用的基本概念和select函数的应用。
摘要由CSDN通过智能技术生成

一、字节顺序和转换函数

1、大小端

不同机器内部对变量的字节存储顺序不同,有的采用大端模式,有的采用小端模式
大端模式:高字节数据存放在低字节处,低字节数据存放在高字节处
小端模式:低字节数据存放在低字节处,高字节数据存放在高字节处

这里写图片描述

2、网络字节顺序

在网络上传输数据时,由于数据传输的两端可能对应不同的硬件平台,采用的存储字节顺序也可能不一致,因此TCP/IP协议规定了在网络上必须采用网络字节顺序(也就是大端模式)。
数据在发送到网络之前将其转换成大端模式,在接受到数据之后再将其转换成符合接收端主机的存储模式。

3、大小端转换函数

#include<netinet.h>
uint32_t htonl(uint32_t, hostlong);
unit16_t htons(uint16_t, hostshort);
uint32_t ntohl(uint32_t, netlong);
uint16_t ntohs(uint16_t, netshort);

htonl:host to network long,用于将主机unsigned int 型数据转换成网络字节顺序
htons:host to network short,用于将主机unsigned short 型数据转换成网络字节顺序
ntohl、ntohs的功能分别与htonl、htons相反。

二、inet 系列函数

通常我们习惯使用字符串形式的网络地址,但在网络上进行数据通信时需使用二进制形式且为网络字节顺序的IP地址。Linux为网络地址的格式转换提供了一系列函数。

#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
in_addr_t inet_addr(const char *cp);
in_addr_t inet_network(const char *cp);
char* inet_ntoa(struct in_addr in);
struct in_addr inet_makeaddr(int net, int host);
in_addr_t inet_lnao
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值