在不使用链接到OpenSSL的情况下,你可以使用boost::asio库来进行网络编程。下面是一个简单的示例代码,演示了如何使用boost::asio进行TCP客户端和服务端的通信。
首先,你需要确保已经安装了Boost库和Boost.Asio。
#include
#include
// TCP客户端
void tcp_client()
{
try
{
// 创建io_context对象
boost::asio::io_context io_context;
// 创建socket对象
boost::asio::ip::tcp::socket socket(io_context);
// 解析IP地址和端口号
boost::asio::ip::tcp::resolver resolver(io_context);
boost::asio::ip::tcp::resolver::results_type endpoints = resolver.resolve("localhost", "1234");
// 连接到服务器
boost::asio::connect(socket, endpoints);
// 发送数据
std::string message = "Hello from client!";
boost::asio::write(socket, boost::asio::buffer(message));
// 接收数据
char buffer[1024];
size_t bytes_received = socket.read_some(boost::asio::buffer(buffer));
std::cout << "Received: " << std::string(buffer, bytes_received) << std::endl;
}
catch (std::exception& e)
{
std::cerr << "Exception: " << e.what() << std::endl;
}
}
// TCP服务端
void tcp_server()
{
try
{
// 创建io_context对象
boost::asio::io_context io_context;
// 监听端口号
boost::asio::ip::tcp::acceptor acceptor(io_context, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 1234));
while (true)
{
// 等待连接
boost::asio::ip::tcp::socket socket(io_context);
acceptor.accept(socket);
// 接收数据
char buffer[1024];
size_t bytes_received = socket.read_some(boost::asio::buffer(buffer));
std::cout << "Received: " << std::string(buffer, bytes_received) << std::endl;
// 发送数据
std::string message = "Hello from server!";
boost::asio::write(socket, boost::asio::buffer(message));
}
}
catch (std::exception& e)
{
std::cerr << "Exception: " << e.what() << std::endl;
}
}
int main()
{
// 启动服务端和客户端
std::thread server_thread(tcp_server);
std::this_thread::sleep_for(std::chrono::seconds(1)); // 等待服务端启动
std::thread client_thread(tcp_client);
// 等待线程结束
server_thread.join();
client_thread.join();
return 0;
}
这是一个简单的TCP客户端和服务端示例,客户端通过连接到服务器发送一条消息,服务器接收到消息后回复一条消息。你可以根据自己的需求进行修改和扩展。