【网络编程】使用函数汇总总结

         记录自己学习,如果对你有帮助,可以一起学习进步,太多要用的函数了,记不住根本记不住,基本上是TCP、UDP之间的通信相关的一些函数

目录

1、htonl、htons:主机字节序和网络字节序的相互转换函数

2、ntohl、ntohs:网络字节序转换成主机字节序

3、inet_addr:将点分十进制转换成网络字节序

4、inet_ntoa:将网络字节序转换成点分十进制

5、socket函数:为通信创建一个端点,并返回该端点的文件描述符

6、bind函数:将一个套接字绑定到特定的网络地址和端口号上

7、listen函数:将套接字设置成被动监听状态,接受客户端的连接请求

8、accept:用于阻塞接收客户端连接请求

9、connect:将套接字文件描述符连接到addr指向的地址空间中

11、recv:从套接字中读取数据到buf中

12、sendto:向套接字文件描述符中读取数据,写给指定的对端接收

13、recvfrom:从套接字文件描述符中读取数据,并将对端地址信息结构体接收

14、getsockopt、setsockopt套接字属性的获取和设置


1、htonl、htons:主机字节序和网络字节序的相互转换函数

函数原型:

1、uint32_t htonl(uint32_t hostlong);    //将4字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序
 
2、uint16_t htons(uint16_t hostshort);   //将2字节无符号整数的主机字节序转换为网络字节序,参数是主机字节序,返回值是网络字节序

功能:将主机字节序转换成网络字节序


2、ntohl、ntohs:网络字节序转换成主机字节序

函数原型:

1、uint32_t ntohl(uint32_t netlong);    //将4字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序
 
2、uint16_t ntohs(uint16_t netshort);     //将2字节无符号整数的网络字节序转换为主机字节序,参数是网络字节序,返回值是主机字节序

功能:将网络字节序转换成主机字节序


3、inet_addr:将点分十进制转换成网络字节序

函数原型:

in_addr_t inet_addr(const char *cp); 

 功能:将点分十进制转换成网络字节序

参数:点分十进制

返回值:网络字节序


4、inet_ntoa:将网络字节序转换成点分十进制

函数原型:

 char *inet_ntoa(struct in_addr in); 

功能:将网络字节序转换成点分十进制

参数:网络字节序

返回值:点分十进制


5、socket函数:为通信创建一个端点,并返回该端点的文件描述符

函数原型:

int socket(int domain, int type, int protocol);

功能:为通信创建一个端点,并返回该端点的文件描述符

参数1:通信域

AF_UNIX, AF_LOCAL   本地通信,同一主机之间进程通信     详情请看man 7 unix
AF_INET             IPv4 提供的网络通信               详情请看man 7 ip
AF_INET6            IPv6 提供的网络通信               详情请看man 7 ipv6

 参数2:指定通信语义,可以由多个宏值使用位或连接

SOCK_STREAM:表示提供TCP协议的传输方式
SOCK_DGRAM:表示提供UDP协议的传输方式
SOCK_NONBLOCK:套接字设置非阻塞属性

参数3: 如果参数2中仅仅指定一个协议,那么参数3可以填0,如果指定多个,则参数3需要指定特定的协议

TCP协议名称:IPPROTO_TCP
UDP协议名称:IPPROTO_UDP

例子:

int sfd = socket(AF_INET, SOCK_STREAM, 0);
//参数1:表示ipv4的网络通信
//参数2:表示使用的是TCP通信方式
//参数3:表示默认使用一个协议

返回值:成功返回创建的套接字文件描述符,失败返回     -1并置位错误码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值