21xrx.com
2025-06-30 15:40:05 Monday
文章检索 我的文章 写文章
C++ 监听端口的实现方法
2023-07-13 05:46:12 深夜i     38     0
C++ 监听 端口 实现方法

在网络编程中,监听端口是非常关键的一步。在C++中,可以使用以下方法来实现监听端口:

(1)创建套接字

首先需要创建一个套接字,可以使用以下代码:

int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
  perror("Cannot create socket");
  exit(EXIT_FAILURE);
}

该代码会创建一个TCP套接字并返回其文件描述符。如果创建失败,会输出错误信息并退出程序。

(2)绑定地址和端口

接着需要把地址和端口绑定到刚才创建的套接字上,使用以下代码:

struct sockaddr_in serverAddr;
int port = 8080;
//设置地址和端口
memset(&serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(port);
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定
if (bind(sockfd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
  perror("Bind error");
  exit(EXIT_FAILURE);
}

该代码会把刚才创建的套接字和指定的地址和端口绑定。如果绑定失败,会输出错误信息并退出程序。

(3)开始监听

绑定成功后,可以开始监听端口了,使用以下代码:

int backlog = 10;
if (listen(sockfd, backlog) < 0) {
  perror("Listen error");
  exit(EXIT_FAILURE);
}

该代码会对刚才绑定的套接字开始监听,并设置backlog表示最大等待连接数。如果监听失败,会输出错误信息并退出程序。

(4)接受连接

最后需要接受连接,使用以下代码:

struct sockaddr_in clientAddr;
socklen_t clientLen = sizeof(clientAddr);
int clientfd = accept(sockfd, (struct sockaddr*)&clientAddr, &clientLen);
if (clientfd < 0) {
  perror("Accept error");
  exit(EXIT_FAILURE);
}

该代码会接受来自客户端的连接,并返回新创建的套接字的文件描述符。如果接受连接失败,会输出错误信息并退出程序。

通过以上几步,便可以在C++中实现监听端口的功能。需要注意的是,在实现监听端口时,一定要注意网络安全和合法性问题,以免造成安全风险。

  
  

评论区