gpt4 book ai didi

c++ - boost::asio UDP 广播

转载 作者:IT老高 更新时间:2023-10-28 22:11:23 28 4
gpt4 key购买 nike

我想使用 boost::asio 向本地网络中的所有计算机广播 UDP 消息。完成我想出的例子

try {
socket.open(boost::asio::ip::udp::v4());
boost::asio::socket_base::broadcast option(true);
socket.set_option(option);
endpoint = boost::asio::ip::udp::endpoint(
boost::asio::ip::address::from_string("192.168.1.255"),
port);
}
catch(std::exception &e) {
}

并且想要从我的队列中广播消息

while(!queue.empty()) {
std::string message = queue.front();
boost::system::error_code ignored_error;
socket.send_to(
boost::asio::buffer(message),
endpoint,
0, ignored_error);
queue.pop_front();
}

但是我的代码在第一个代码块中抛出了一个异常 invalid argument 异常。不过,它适用于 127.0.0.1。我做错了什么?

最佳答案

尝试使用以下代码片段发送 UDP 广播,利用 ba::ip::address_v4::broadcast() 调用获取端点:

    bs::error_code error;
ba::ip::udp::socket socket(_impl->_ioService);

socket.open(ba::ip::udp::v4(), error);
if (!error)
{
socket.set_option(ba::ip::udp::socket::reuse_address(true));
socket.set_option(ba::socket_base::broadcast(true));

ba::ip::udp::endpoint senderEndpoint(ba::ip::address_v4::broadcast(), port);

socket.send_to(data, senderEndpoint);
socket.close(error);
}

关于c++ - boost::asio UDP 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9310231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com