C++ socket recv 示例
时间: 2023-08-04 20:21:07 浏览: 178
c++ socket tcp demo
以下是一个简单的 C++ 示例,用于从已连接的套接字接收数据:
```c++
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <unistd.h>
#define MAX_BUFFER_SIZE 1024
int main() {
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
// 假设已经成功连接到远程主机,获取到了已连接的套接字描述符 sockfd
char buffer[MAX_BUFFER_SIZE];
int recv_size = recv(sockfd, buffer, MAX_BUFFER_SIZE, 0);
if (recv_size > 0) {
std::cout << "Received " << recv_size << " bytes of data: " << buffer << std::endl;
} else if (recv_size == 0) {
std::cout << "The remote host closed the connection." << std::endl;
} else {
std::cout << "Failed to receive data: " << strerror(errno) << std::endl;
}
close(sockfd);
return 0;
}
```
在上面的示例中,我们首先创建了一个套接字 `sockfd`,然后假设已经成功连接到了远程主机,获取到了已连接的套接字描述符 `sockfd`。接下来,我们定义了一个缓冲区 `buffer`,并调用 `recv()` 函数从套接字中接收数据。如果 `recv()` 函数返回值大于 0,则表示接收到了数据,我们可以通过打印出来的方式来查看接收到的数据。如果 `recv()` 函数返回值为 0,则表示对端已经关闭了连接。如果 `recv()` 函数返回值为 -1,则表示接收数据出现了错误,我们可以通过打印出来的方式来查看具体的错误信息。最后,我们需要关闭已连接的套接字并退出程序。
阅读全文