Linux 网络编程

IP地址转换函数(仅适用于 ipv4 )

inet_addr(char):将 十进制地址 转换为 网络字节序 的IPV4地址
inet_aton(char
cp, struct in_addr* inp):和 inet_addr 一样,但是将结果存储于 inp。
char* inet_ntoa(struct in_addr in):将 网络字节序 转化成 点分十进制(但是有不可重入性)

适用于 4 和 6 的 IP 转换函数

inet_pton(int af, char* src, void* dst):将用字符串表示的点分十进制 IP 地址 src 转换成网络字节序,存储于 dst 中。
inet_ntop(int fa, void* src, char* dst, socklen_t cnt):将网络字节序转换成 点分十进制,cnt 表示目标存储单元的大小

cnt 设定的宏:
INET_ADDRSTRLEN 16
INET6_ADDRSTRLEN 46

网络信息 API

struct servent* getservbyname(char* name, char* proto):
struct servent* getservbyport(int port, char* proto):

TCP缓冲区设置

正常情况下,接收缓冲区最小为 256 字节,发送缓冲区最小值为 2048 字节
可以通过 setsocketopt(sockFd, SOL_SOCKET, ..., val, size) 来设置相关参数

SO_REUSEADDR: 地址可重用
SO_SNDBUF: 设置发送缓冲区大小
SO_RCVBUF: 设置接收缓冲区大小
SO_RCVLOWAT: 设置接收缓冲区最小可读长度(一般为1字节)
SO_SNDLOWAT: 设置发送缓冲区最小可发长度(一般为1字节)

同步与异步 IO

同步IO:用户代码自己执行I/O操作,通知IO就绪事件
异步IO:由内核来执行I/O操作,通知IO完成事件

posted @ 2023-04-02 16:30  Besnnad  阅读(37)  评论(0)    收藏  举报