- 用于本地端口和
IP
地址和网络中的端口和IP
地址的转换函数:
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
- 其中
IP
地址是32
为无符号的整型变量,端口号是16
位无符号的整型变量
- 用于网络的
IP
地址和点分十进制的转换函数:
const char *inet_ntop(int af, const void *restrict src,
char dst[restrict .size], socklen_t size);
int inet_pton(int af, const char *restrict src, void *restrict dst);
- 前者用于将
32
位的IP
地址转换为点分十进制的,后者用于将点分十进制的IP
地址转换为网络中可用的IP
地址
Socket
函数: 用于获取某一个sockfd
,这一个sockfd
也就是监听文件描述符号:
int socket(int domain, int type, int protocol);
Bind
函数: 用于将端口号和IP
地址绑定到某一个给定的fd
上面
int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
- 其中需要的
struct sockaddr_in
结构体(其中可以使用INADDR_ANY
)获取到本机任意有效的IP
地址:
struct sockaddr_in {
sa_family_t sin_family; /* AF_INET */
in_port_t sin_port; /* Port number */
struct in_addr sin_addr; /* IPv4 address */
};
Listen
函数: 用于绑定最大等待连接队列中的最大元素个数
int listen(int sockfd, int backlog);
Accept
函数: 用于连接到客户端,获取connfd
int accept(int sockfd, struct sockaddr *_Nullable restrict addr,
socklen_t *_Nullable restrict addrlen);
Connect
函数: 用于向服务器端发送连接请求:
int connect(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);