在上述完成创建socket(类似购买电话机)、socket被命名后(类似绑定电话机和电话号码),这就基本完成了“接电话”的准备操作,下面需要等待“接听电话”。
listen函数的Linux头文件以及函数定义如下:
#include <sys/socket.h>
int listen(int sockfd, int backlog);
listen函数参数以及返回值如下:
/**
* 监听socket
*
* @param sockfd socket文件描述符
* @param backlog 提示内核监听队列的最大长度
* @return 函数执行成功返回0,失败返回-1
*/
int listen(int sockfd, int backlog);
listent函数创建一个监听队列以存放待处理的客户连接,将套接字sockfd指定为被监听的socket(类似指定电话机处于可接受的状态)。其中backlog一般取值为5。
下面写个程序测试下listen函数,如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h> // sockaddr_in
#include <sys/socket.h>
int main()
{
// 此处省略上一节重复代码
if (listen(server_socket, 5) == -1) {
perror("listen error");
exit(1);
}
printf("listen ok\n");
return 0;
}
第11行调用listen函数完成监听socket。
右侧打开listen_test.c文件,试添加listen函数,并编译测试。