地址族与数据序列
书上讲解了一些ipv4地址的概念,以及ipv6地址的概念。
又说了一些端口号的概念,以及端口号的作用。
但是还是很复杂的,直接理解我第一章节说的内容,每个概念只有一句话.但是这是建立在我对网络编程的了解基础上的.
下讲解了
1mindmap
2 root((sockadd_in))
3 sin_family(sin_family)
4 AF_INET(AF_INET)
5 AF_INET6(AF_INET6)
6 AF_Local(AF_Local)
7 sin_port(sin_port)
8 htons("htons(int)")
9 sin_addr(sin_addr)
10 s_addr(s_addr)
11 inet_addr("inet_addr(char*)")
需要把sockaddr_in转化成struct sockaddr *才能使用bind()等函数.
网络字节序与地址的转换
htons(int):将int类型整数转换为网络字节序。htonl(int):将int类型整数转换为网络字节序。ntohs(int):将int类型整数转换为主机字节序。ntohl(int):将int类型整数转换为主机字节序。inet_addr(char*):将char*类型字符串转换为in_addr类型。inet_aton(char*, struct in_addr*):将char*类型字符串转换为in_addr类型。inet_ntoa(struct in_addr):将in_addr类型转换为char*类型字符串,失败返回-1
每次创建服务器端socket都要输入IP地址会有些繁琐,此时可以使用如下的初始化地址信息
1struct sockaddr_in server_addr;
2char * serv_port = "8989";
3server_addr.sin_family = AF_INET;
4server_addr.sin_port = htons(atoi(serv_port));
5server_addr.sin_addr.s_addr = inet_addr(INADDR_ANY);