C++中TCP协议connect函数代码实例
时间: 2024-12-11 07:02:00 浏览: 15
在C++中,当你想要通过TCP连接到服务器时,通常会使用`std::socket`和相关的库,如`boost.asio`或者标准库中的`netdb.h`, `netinet/in.h`, 和 `arpa/inet.h`。以下是一个基本的例子,展示如何使用`boost.asio`库的`ip::tcp`模块来进行TCP连接:
```cpp
#include <boost/asio.hpp>
#include <iostream>
namespace ip = boost::asio::ip;
using tcp = boost::asio::ip::tcp;
int main() {
try {
// 创建一个IO服务对象
boost::asio::io_context io_context;
// 创建一个TCP socket
tcp::resolver resolver(io_context);
tcp::resolver::query query("example.com", "80"); // 服务器地址和端口
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
// 连接到第一个可用的IP地址
tcp::socket socket(io_context);
boost::asio::connect(socket, endpoint_iterator);
std::cout << "Connected to server.\n";
// 发送数据...
boost::array<char, 128> message = {'H', 'e', 'l', 'l', 'o', '\r', '\n'};
boost::system::error_code ignored_error;
boost::asio::write(socket, boost::asio::buffer(message), ignored_error);
// 接收数据...
char buffer[128];
boost::asio::read(socket, boost::asio::dynamic_buffer(buffer), ignored_error);
std::cout << "Received: " << std::string(buffer) << "\n";
} catch (std::exception& e) {
std::cerr << "Failed: " << e.what() << '\n';
}
return 0;
}
```
在这个例子中,我们首先创建了一个IO服务,然后解析服务器地址并连接到它。接着发送一条消息并接收响应。注意,这个代码需要`boost.asio`库支持。
阅读全文