是否可以通过 Boost Asio TCP 进行广播
Is broadcasting possible via Boost Asio TCP
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 进行广播?如果是,我们将不胜感激。
提前致谢。
TCP 协议不支持广播,为此您应该使用 UDP。
如果你查看boost源代码:
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,之前就读过它,因为不能保证数据包的传送。
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 进行广播?如果是,我们将不胜感激。
提前致谢。
TCP 协议不支持广播,为此您应该使用 UDP。
如果你查看boost源代码: 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,之前就读过它,因为不能保证数据包的传送。