面试题答案
一键面试-
创建套接字:
- 系统调用:
socket
- 函数原型:
int socket(int domain, int type, int protocol);
- 参数含义:
domain
:指定协议族,如AF_INET
(IPv4协议),AF_INET6
(IPv6协议)。type
:指定套接字类型,常见的有SOCK_STREAM
(面向连接的流套接字,用于TCP),SOCK_DGRAM
(无连接的数据报套接字,用于UDP)。protocol
:指定协议,通常为0,让系统根据domain
和type
选择合适的协议,对于TCP的SOCK_STREAM
类型,一般为IPPROTO_TCP
。
- 系统调用:
-
绑定地址和端口:
- 系统调用:
bind
- 函数原型:
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
- 参数含义:
sockfd
:由socket
调用返回的套接字描述符。addr
:指向一个struct sockaddr
类型的结构体指针,对于IPv4,实际传入的是struct sockaddr_in
结构体,该结构体包含了服务器的IP地址和端口号等信息。addrlen
:addr
结构体的长度。
- 系统调用:
-
监听连接:
- 系统调用:
listen
- 函数原型:
int listen(int sockfd, int backlog);
- 参数含义:
sockfd
:由socket
调用返回的套接字描述符。backlog
:指定在未处理的连接请求队列中允许的最大连接数,它表示了内核为每个监听套接字维护的两个队列的总和的最大值。一个是未完成连接队列(SYN队列),另一个是已完成连接队列(Accept队列)。
- 系统调用: