志主要有:
MSG_PEEK 对数据接收函数有效,表示读出网络数据后不清除已读的数据
MSG_WAITALL 对数据接收函数有效,表示一直执行直到 buf 读满、socket 出错或者程序收
到信号。
MSG_DONTWAIT 对数据发送函数有效,表示不阻塞等待数据发送完后返回,而是直接返回。
(只对非阻塞 socket 有效)
MSG_NOSIGNAL 对发送接收函数有效,表示在对方关闭连接后出错但不发送 SIGPIPE 信号给
程序。
MSG_OOB 对发送接收都有效,表示读/写带外数据(out-of-band data)
IP 地址字符串和网络字节序的二进制 IP 地址相互转换的函数:
#inlcude <arpa/inet.h>
int inet_aton(const char * <IP 地址字符串>, struct in_addr * <32 位的网络字节序形
式的 IP 地址>)
成功—1
失败—0
[通用地址函数]int inet_pton(int <地址簇类型>,可以是 AF_INET/AF_INET6>,const char
* <IP 地址字符串>,void * <32 位的网络字节序形式的 IP 地址>)
成功—1
格式错误—0
失败—0
in_addr_t inet_addr(const char * <IP 地址字符串>)
返回 32 位网络字节序的 IP 地址,失败—INADDR_NONE
char *inet_ntoa(struct in_addr <32 位的网络字节序形式的 IP 地址>) 返回 IP 地址字符
串
const char * inet_ntop(int <地址簇类型>, const void * <32 位的网络字节序形式的 IP
地址>, char * <IP 地址字符串>, size_t <IP 地址字符串的最大长度>)
返回指向结果<IP 地址字符串>的指针
字节顺序转换
htons()--"Host to Network Short"
htonl()--"Host to Network Long"
ntohs()--"Network to Host Short"
ntohl()--"Network to Host Long"
连接过程是通过一系列状态表示的,这些状态有:LISTEN,SYN-SENT,SYN-RECEIVED,
ESTABLISHED,FIN-WAIT-1,FIN-WAIT-2,CLOSE-WAIT,CLOSING,LAST-ACK,TIME-WAIT 和
CLOSED。CLOSED 表示没有连接,各个状态的意义如下:
LISTEN - 侦听来自远方 TCP 端口的连接请求;
SYN-SENT - 在发送连接请求后等待匹配的连接请求;