boost库1.70,udp建立连接,写一个服务端,举例说明
时间: 2024-03-19 17:44:17 浏览: 129
UDP是无连接协议,所以在使用boost库的UDP服务端时,不需要建立连接。服务端只需要监听指定的端口,接收客户端发送的数据即可。以下是一个示例代码:
```c++
#include <iostream>
#include <boost/asio.hpp>
int main() {
boost::asio::io_context io_context;
boost::asio::ip::udp::socket socket(io_context,
boost::asio::ip::udp::endpoint(boost::asio::ip::udp::v4(), 6179));
// 定义一个接收缓存区
std::array<char, 1024> recv_buffer;
while (true) {
boost::asio::ip::udp::endpoint remote_endpoint;
boost::system::error_code error;
// 接收数据
size_t recv_len = socket.receive_from(
boost::asio::buffer(recv_buffer), remote_endpoint, 0, error);
if (error && error != boost::asio::error::message_size) {
std::cout << "error: " << error.message() << std::endl;
break;
}
// 输出接收到的数据
std::cout << "Received " << recv_len << " bytes from "
<< remote_endpoint.address().to_string() << ":" << remote_endpoint.port() << std::endl;
std::cout.write(recv_buffer.data(), recv_len);
std::cout << std::endl;
}
return 0;
}
```
上述代码中,创建了一个`boost::asio::ip::udp::socket`对象,并指定监听的端口号为6179。然后,在一个无限循环中,使用`socket.receive_from()`函数接收客户端发送的数据,并将发送端点信息保存在`remote_endpoint`对象中。最后,输出接收到的数据和发送端点信息。
需要注意的是,上述代码只是一个简单的示例,还需要考虑异常处理、多线程处理等问题。
阅读全文