MST

星途 面试题库

面试题:网络编程之C++ Socket连接建立

在C++ 网络编程中,使用Socket进行TCP连接时,简述客户端和服务器端分别需要调用哪些主要函数来建立连接,并说明每个函数的作用。
13.3万 热度难度
后端开发网络编程

知识考点

AI 面试

面试题答案

一键面试

客户端

  1. socket()
    • 作用:创建一个套接字描述符,指定协议族(如AF_INET表示IPv4)、套接字类型(如SOCK_STREAM表示TCP流套接字)和协议(通常为0,表示使用默认协议)。
    • 示例代码int clientSocket = socket(AF_INET, SOCK_STREAM, 0);
  2. connect()
    • 作用:将套接字与服务器的地址和端口进行连接。它使用服务器的IP地址和端口号来尝试建立TCP连接。
    • 示例代码
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(serverPort);
    inet_pton(AF_INET, serverIP.c_str(), &serverAddr.sin_addr);
    int connectResult = connect(clientSocket, (sockaddr*)&serverAddr, sizeof(serverAddr));
    

服务器端

  1. socket()
    • 作用:同客户端,创建一个套接字描述符,指定协议族、套接字类型和协议。
    • 示例代码int serverSocket = socket(AF_INET, SOCK_STREAM, 0);
  2. bind()
    • 作用:将套接字绑定到一个特定的IP地址和端口号上,使得服务器能够在该地址和端口监听客户端的连接请求。
    • 示例代码
    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(serverPort);
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    int bindResult = bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr));
    
  3. listen()
    • 作用:将套接字设置为监听模式,指定等待连接队列的最大长度。此时服务器开始监听客户端的连接请求。
    • 示例代码int listenResult = listen(serverSocket, backlog);,其中backlog是等待连接队列的长度。
  4. accept()
    • 作用:接受客户端的连接请求。它会阻塞直到有客户端连接过来,然后返回一个新的套接字描述符,用于与该客户端进行通信。
    • 示例代码
    sockaddr_in clientAddr;
    socklen_t clientAddrLen = sizeof(clientAddr);
    int clientConnectionSocket = accept(serverSocket, (sockaddr*)&clientAddr, &clientAddrLen);