MST

星途 面试题库

面试题:Linux网络编程之中等难度:套接字编程基础

在Linux环境下,描述TCP套接字编程中服务器端从创建套接字到监听连接的主要步骤,并且说明每个步骤使用的系统调用及其参数含义。
12.0万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试
  1. 创建套接字

    • 系统调用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,让系统根据domaintype选择合适的协议,对于TCP的SOCK_STREAM类型,一般为IPPROTO_TCP
  2. 绑定地址和端口

    • 系统调用bind
    • 函数原型int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
    • 参数含义
      • sockfd:由socket调用返回的套接字描述符。
      • addr:指向一个struct sockaddr类型的结构体指针,对于IPv4,实际传入的是struct sockaddr_in结构体,该结构体包含了服务器的IP地址和端口号等信息。
      • addrlenaddr结构体的长度。
  3. 监听连接

    • 系统调用listen
    • 函数原型int listen(int sockfd, int backlog);
    • 参数含义
      • sockfd:由socket调用返回的套接字描述符。
      • backlog:指定在未处理的连接请求队列中允许的最大连接数,它表示了内核为每个监听套接字维护的两个队列的总和的最大值。一个是未完成连接队列(SYN队列),另一个是已完成连接队列(Accept队列)。