C++ windows下使用boost::asio的udp广播

C++ windows下使用boost::asio的udp广播,c++,boost,udp,boost-asio,C++,Boost,Udp,Boost Asio,我在应用程序的udp广播部分遇到问题。我正在windows 10下使用boost 1.62.0 void test_udp_broadcast(void) { boost::asio::io_service io_service; boost::asio::ip::udp::socket socket(io_service); boost::asio::ip::udp::endpoint remote_endpoint; socket.open(boost::asio::ip:

我在应用程序的udp广播部分遇到问题。我正在windows 10下使用boost 1.62.0

void test_udp_broadcast(void)
{
  boost::asio::io_service io_service;
  boost::asio::ip::udp::socket socket(io_service);
  boost::asio::ip::udp::endpoint remote_endpoint;

  socket.open(boost::asio::ip::udp::v4());
  socket.set_option(boost::asio::ip::udp::socket::reuse_address(true));
  socket.set_option(boost::asio::socket_base::broadcast(true));
  remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(), 4000);

  try {
    socket.bind(remote_endpoint);
    socket.send_to(boost::asio::buffer("abc", 3), remote_endpoint);
  } catch (boost::system::system_error e) {
    std::cout << e.what() << std::endl;
  }
}
void测试\u udp\u广播(void)
{
boost::asio::io_服务io_服务;
boost::asio::ip::udp::socket套接字(io_服务);
boost::asio::ip::udp::endpoint远程\u端点;
open(boost::asio::ip::udp::v4());
set_选项(boost::asio::ip::udp::socket::重用_地址(true));
set_选项(boost::asio::socket_base::broadcast(true));
远程_endpoint=boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(),4000);
试一试{
socket.bind(远程_端点);
socket.send_to(boost::asio::buffer(“abc”,3),远程_端点);
}捕获(boost::system::system_错误e){

std::cout我相信您希望使用any()将套接字绑定到本地端点(如果希望接收广播数据包,请参阅),并使用broadcast()发送到远程端点(请参阅)

以下内容为我编译,不会引发任何错误:

void test_udp_broadcast(void)
{
  boost::asio::io_service io_service;
  boost::asio::ip::udp::socket socket(io_service);
  boost::asio::ip::udp::endpoint local_endpoint;
  boost::asio::ip::udp::endpoint remote_endpoint;

  socket.open(boost::asio::ip::udp::v4());
  socket.set_option(boost::asio::ip::udp::socket::reuse_address(true));
  socket.set_option(boost::asio::socket_base::broadcast(true));
  local_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(), 4000);
  remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::broadcast(), 4000);

  try {
    socket.bind(local_endpoint);
    socket.send_to(boost::asio::buffer("abc", 3), remote_endpoint);
  } catch (boost::system::system_error e) {
    std::cout << e.what() << std::endl;
  }
}
void测试\u udp\u广播(void)
{
boost::asio::io_服务io_服务;
boost::asio::ip::udp::socket套接字(io_服务);
boost::asio::ip::udp::endpoint local\u endpoint;
boost::asio::ip::udp::endpoint远程\u端点;
open(boost::asio::ip::udp::v4());
set_选项(boost::asio::ip::udp::socket::重用_地址(true));
set_选项(boost::asio::socket_base::broadcast(true));
本地_endpoint=boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(),4000);
远程_endpoint=boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::broadcast(),4000);
试一试{
socket.bind(本地_端点);
socket.send_to(boost::asio::buffer(“abc”,3),远程_端点);
}捕获(boost::system::system_错误e){

std::cout我相信您希望使用any()将套接字绑定到本地端点(如果希望接收广播数据包,请参阅),并使用broadcast()发送到远程端点(请参阅)

以下内容为我编译,不会引发任何错误:

void test_udp_broadcast(void)
{
  boost::asio::io_service io_service;
  boost::asio::ip::udp::socket socket(io_service);
  boost::asio::ip::udp::endpoint local_endpoint;
  boost::asio::ip::udp::endpoint remote_endpoint;

  socket.open(boost::asio::ip::udp::v4());
  socket.set_option(boost::asio::ip::udp::socket::reuse_address(true));
  socket.set_option(boost::asio::socket_base::broadcast(true));
  local_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(), 4000);
  remote_endpoint = boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::broadcast(), 4000);

  try {
    socket.bind(local_endpoint);
    socket.send_to(boost::asio::buffer("abc", 3), remote_endpoint);
  } catch (boost::system::system_error e) {
    std::cout << e.what() << std::endl;
  }
}
void测试\u udp\u广播(void)
{
boost::asio::io_服务io_服务;
boost::asio::ip::udp::socket套接字(io_服务);
boost::asio::ip::udp::endpoint local\u endpoint;
boost::asio::ip::udp::endpoint远程\u端点;
open(boost::asio::ip::udp::v4());
set_选项(boost::asio::ip::udp::socket::重用_地址(true));
set_选项(boost::asio::socket_base::broadcast(true));
本地_endpoint=boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(),4000);
远程_endpoint=boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::broadcast(),4000);
试一试{
socket.bind(本地_端点);
socket.send_to(boost::asio::buffer(“abc”,3),远程_端点);
}捕获(boost::system::system_错误e){

我不能谢谢你,那是我错过的。谢谢你,那是我错过的。