Asynchronous Boost.Asio UDP Sender/Receiver Peer example.
- C++ 17 compiler
- CMake 3.22.0
- Boost 1.74.0
- GoogleTest 1.11.0
boost::asio::io_context context;
std::thread thread([&context]() { context.run(); });
struct : UdpPeer::Observer {
void onReceivedFrom(const char *data, size_t size,
const boost::asio::ip::udp::endpoint &endpoint) {
std::cout << "data received from endpoint address "
<< endpoint.address().to_string() << ": ";
std::cout.write(data, size);
std::cout << std::endl;
};
} observer;
UdpPeer receiver{context, observer};
receiver.openSocket(boost::asio::ip::udp::v4());
receiver.bind(1234);
receiver.startReceiving();
UdpPeer sender{context, observer};
sender.openSocket(boost::asio::ip::udp::v4());
std::string msg("example");
sender.sendTo(msg.data(), msg.size(), {boost::asio::ip::udp::v4(), 1234});
- Install dependencies.
- linux
sudo apt-get install libboost-dev sudo apt-get install libgtest-dev- macOs
brew install boost brew install googletest - Clone repository.
git clone https://github.com/alejandrofsevilla/boost-udp-peer.git cd boost-udp-peer - Build.
cmake -S . -B build cmake --build build - Run tests.
./build/tests/boost-udp-peer-tests