c++++标准库提供网络编程功能:创建套接字连接到远程主机发送和接收数据关闭连接
使用C++标准库进行网络编程
C++标准库提供了广泛的网络编程功能,使用户能够轻松与远程计算机建立连接并传输数据。本教程将介绍如何使用C++标准库执行以下网络编程任务:
- 创建套接字: 套接字是远程通信的端点。
- 连接到远程主机: 建立到目标计算机的连接。
- 发送和接收数据: 发送和接收数据包。
- 关闭连接: 释放资源并关闭连接。
代码示例
以下提供了一个简单的C++网络编程示例, демонстрационных целях创建一个简单的客户端-服务器应用程序:
客户端代码:
#include <iostream>
#include <boost/asio.hpp>
int main() {
// 创建套接字
boost::asio::io_service io_service;
boost::asio::ip::tcp::socket socket(io_service);
// 连接到远程主机
boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 12345);
socket.connect(endpoint);
// 发送数据
std::string message = "Hello from client!";
socket.write_some(boost::asio::buffer(message));
// 接收数据
std::vector<char> buffer(1024);
size_t len = socket.read_some(boost::asio::buffer(buffer));
std::cout << std::string(buffer.begin(), buffer.begin() + len) << std::endl;
// 关闭连接
socket.close();
return 0;
}
服务器代码:
#include <iostream>
#include <boost/asio.hpp>
int main() {
// 创建套接字
boost::asio::io_service io_service;
boost::asio::ip::tcp::acceptor acceptor(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 12345));
// 接受连接
boost::asio::ip::tcp::socket socket(io_service);
acceptor.accept(socket);
// 接收数据
std::vector<char> buffer(1024);
size_t len = socket.read_some(boost::asio::buffer(buffer));
std::cout << std::string(buffer.begin(), buffer.begin() + len) << std::endl;
// 发送数据
std::string message = "Hello from server!";
socket.write_some(boost::asio::buffer(message));
// 关闭连接
socket.close();
return 0;
}