基于boost库1.60,写一个基于UDP通信的程序。
时间: 2024-02-29 22:55:44 浏览: 110
好的,以下是一个简单的基于boost库1.60的UDP通信程序示例:
```cpp
#include <boost/asio.hpp>
#include <iostream>
using boost::asio::ip::udp;
int main()
{
try
{
boost::asio::io_service io_service;
// 创建一个UDP socket
udp::socket socket(io_service, udp::endpoint(udp::v4(), 0));
std::cout << "Local endpoint: " << socket.local_endpoint().address().to_string() << ":" << socket.local_endpoint().port() << std::endl;
// 发送数据
udp::endpoint remote_endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 1234);
std::string message = "Hello, world!";
socket.send_to(boost::asio::buffer(message), remote_endpoint);
// 接收数据
char recv_buf[1024];
udp::endpoint remote_endpoint2;
size_t len = socket.receive_from(boost::asio::buffer(recv_buf), remote_endpoint2);
std::cout << "Received message: " << std::string(recv_buf, len) << std::endl;
std::cout << "From endpoint: " << remote_endpoint2.address().to_string() << ":" << remote_endpoint2.port() << std::endl;
}
catch (std::exception& e)
{
std::cerr << e.what() << std::endl;
}
return 0;
}
```
该程序首先创建了一个UDP socket,并打印出其本地的IP地址和端口号。然后向目标IP地址和端口号发送一个字符串消息。接着等待接收来自任意IP地址和端口号的数据,并将接收到的消息和对方的IP地址和端口号打印出来。
需要注意的是,在实际使用中需要根据需求修改IP地址和端口号等参数。另外,boost库的使用可能因版本不同而有所差异,需要根据实际情况进行调整。
阅读全文