Linux网络编程入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

在上述完成创建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函数,并编译测试。