基于boost库,写一个UDP的socket通讯程序
时间: 2024-02-21 08:57:21 浏览: 149
好的,下面是基于boost库写一个UDP的socket通讯程序的示例代码:
```c++
#include <iostream>
#include <boost/asio.hpp>
using boost::asio::ip::udp;
int main()
{
try
{
boost::asio::io_context io_context;
// 创建UDP socket对象
udp::socket socket(io_context, udp::endpoint(udp::v4(), 0));
std::cout << "UDP socket created." << std::endl;
// 监听端口
socket.bind(udp::endpoint(udp::v4(), 12345));
std::cout << "UDP socket listening on port 12345." << std::endl;
while (true)
{
// 接收数据
boost::array<char, 1024> recv_buf;
udp::endpoint remote_endpoint;
boost::system::error_code error;
size_t recv_len = socket.receive_from(boost::asio::buffer(recv_buf), remote_endpoint, 0, error);
if (error && error != boost::asio::error::message_size)
throw boost::system::system_error(error);
// 输出接收到的数据
std::cout << "Received " << recv_len << " bytes from " << remote_endpoint << ":" << std::endl;
std::cout.write(recv_buf.data(), recv_len);
std::cout << std::endl;
// 发送数据回客户端
boost::system::error_code ignored_error;
socket.send_to(boost::asio::buffer(recv_buf, recv_len), remote_endpoint, 0, ignored_error);
}
}
catch (std::exception& e)
{
std::cerr << "Exception: " << e.what() << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先创建了一个UDP socket对象,然后监听端口12345。在while循环中,我们使用socket.receive_from()方法接收客户端发送过来的数据,然后使用socket.send_to()方法将数据回传给客户端。
阅读全文