可以通过Boost Asio TCP进行广播

时间:2015-06-16 17:00:18

标签: sockets c++11 tcp boost-asio

http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/ip__tcp/socket.html

Boost :: asio :: ip :: tcp :: socket确实有一个选项,可以设置允许广播消息的权限。所以我的问题是,可以通过Boost Asio TCP Socket进行广播吗?如果是,那么对此事的任何帮助都将受到高度赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:0)

TCP协议不支持广播,因为你应该使用UDP。

如果您查看了增强源代码: http://www.boost.org/doc/libs/1_57_0/boost/asio/socket_base.hpp

他们有一些文件涉及这个:

  /// Socket option to permit sending of broadcast messages.
  /**
   * Implements the SOL_SOCKET/SO_BROADCAST socket option.
   *
   * @par Examples
   * Setting the option:
   * @code
   * boost::asio::ip::udp::socket socket(io_service); 
   * ...
   * boost::asio::socket_base::broadcast option(true);
   * socket.set_option(option);
   * @endcode
   *
   * @par
   * Getting the current option value:
   * @code
   * boost::asio::ip::udp::socket socket(io_service); 
   * ...
   * boost::asio::socket_base::broadcast option;
   * socket.get_option(option);
   * bool is_set = option.value();
   * @endcode
   *
   * @par Concepts:
   * Socket_Option, Boolean_Socket_Option.
   */

简而言之,不是使用tcp套接字,而是切换到udp,之前只需阅读它,因为传输数据包已经赢了;不能保证。