-
建立连接
1.1 socket (非常类似于open函数,用来打开一个网络连接,如果成功则返回一个网络文件描述符(int类型),之后我们操作这个网络连接都通过这个网络文件描述符)
1.2 bind 绑定的意思;好比是ioctl
1.3 listen 监听
1.4 connect 连接 (客户端) -
发送和接收
2.1 send 和 write
2.2 recv 和 read -
辅助性函数
3.1 inet_aton (字符转为32位二进制)
inet_addr (字符转为32位二进制)
inet_ntoa (32位二进制转位字符)
3.2 inet_ntop (32位二进制转位字符)
inet_pton (字符转为32位二进制)
这两个是IPv4 和 IPv6均可以使用的。 -
表示IP地址相关数据结构
4.1 都定义在netinet/in.h中(也可以到ubuntu中查看vi /usr/include/netinet/in.h)
4.2 struct sockaddr 这个结构体是网络编程接口中用来表示一个IP地址的,注意这个IP地址是不区分IPv4和IPv6的(或者说兼容IPv4和IPv6的)typedef uint32_t in_addr_t 网络内部用来表示IP地址的类型。
4.3
struct in_addr
{
in_addr_t s_addr;
};
4.4
struct sockaddr_in
{
_SOCKADDR_COMMON (sin);
in_port_t sin_port; /* Port number. /
struct in_addr sin_addr; / Internet address. /
/ Pad to size of `struct sockaddr’. */
unsigned char sin_zero[sizeof (struct sockaddr) -
__SOCKADDR_COMMON_SIZE -
sizeof (in_port_t) -
sizeof (struct in_addr)];
}
4.5 struct sockaddr 这个结构是linux的网络编程接口中用来表示IP地址的标准结构体,bind connect等函数中都需要这个结构体,这个结构体是兼容IPv4和IPv6的,在实际编程中这个结构会被一个struct sockaddr_in 或者一个struct sockaddr_in6 (IPv)所填充。
参考朱老师物联网大课堂