C++中如何实现TCP通信?
时间: 2024-10-13 18:03:23 浏览: 33
在C++中,我们可以使用Socket编程来实现TCP通信。以下是创建一个简单的TCP服务器和客户端的基本步骤:
**服务器端(Server.cpp):**
```cpp
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
int main() {
try {
boost::asio::io_context io_context;
tcp::acceptor acceptor(io_context, tcp::endpoint(tcp::v4(), 12345)); // 设置监听端口
for (;;) { // 循环监听连接
tcp::socket socket(io_context);
acceptor.accept(socket);
// 处理新连接
handle_client_connection(socket);
}
} catch (std::exception& e) {
std::cerr << "Exception: " << e.what() << '\n';
}
return 0;
}
void handle_client_connection(tcp::socket socket) {
// ... 实现具体的接收、发送数据和关闭连接的代码
}
```
**客户端(Client.cpp):**
```cpp
#include <boost/asio.hpp>
using boost::asio::ip::tcp;
int main() {
try {
boost::asio::io_context io_context;
tcp::resolver resolver(io_context);
tcp::resolver::query query("localhost", "12345"); // 设置目标地址和端口
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::socket socket(io_context);
boost::asio::connect(socket, endpoint_iterator); // 连接服务器
// 发送请求
write_socket(socket, "Hello from client!");
// 接收响应
read_socket(socket, response_buffer);
std::cout << "Response: " << response_buffer.data() << std::endl;
} catch (std::exception& e) {
std::cerr << "Exception: " << e.what() << '\n';
}
return 0;
}
// 实现write_socket和read_socket函数来实际地写入和读取数据
```
在这个例子中,我们使用了Boost.Asio库,这是一个跨平台的异步网络编程库。`tcp::acceptor`和`tcp::socket`分别代表服务器监听端口和客户端连接。你需要自己实现`handle_client_connection`和数据传输相关的函数。
阅读全文