![]() |
|
|||
File indexing completed on 2025-02-24 09:41:57
0001 // 0002 // ip/multicast.hpp 0003 // ~~~~~~~~~~~~~~~~ 0004 // 0005 // Copyright (c) 2003-2023 Christopher M. Kohlhoff (chris at kohlhoff dot com) 0006 // 0007 // Distributed under the Boost Software License, Version 1.0. (See accompanying 0008 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 0009 // 0010 0011 #ifndef BOOST_ASIO_IP_MULTICAST_HPP 0012 #define BOOST_ASIO_IP_MULTICAST_HPP 0013 0014 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 0015 # pragma once 0016 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 0017 0018 #include <boost/asio/detail/config.hpp> 0019 #include <cstddef> 0020 #include <boost/asio/ip/detail/socket_option.hpp> 0021 0022 #include <boost/asio/detail/push_options.hpp> 0023 0024 namespace boost { 0025 namespace asio { 0026 namespace ip { 0027 namespace multicast { 0028 0029 /// Socket option to join a multicast group on a specified interface. 0030 /** 0031 * Implements the IPPROTO_IP/IP_ADD_MEMBERSHIP socket option. 0032 * 0033 * @par Examples 0034 * Setting the option to join a multicast group: 0035 * @code 0036 * boost::asio::ip::udp::socket socket(my_context); 0037 * ... 0038 * boost::asio::ip::address multicast_address = 0039 * boost::asio::ip::address::from_string("225.0.0.1"); 0040 * boost::asio::ip::multicast::join_group option(multicast_address); 0041 * socket.set_option(option); 0042 * @endcode 0043 * 0044 * @par Concepts: 0045 * SettableSocketOption. 0046 */ 0047 #if defined(GENERATING_DOCUMENTATION) 0048 typedef implementation_defined join_group; 0049 #else 0050 typedef boost::asio::ip::detail::socket_option::multicast_request< 0051 BOOST_ASIO_OS_DEF(IPPROTO_IP), 0052 BOOST_ASIO_OS_DEF(IP_ADD_MEMBERSHIP), 0053 BOOST_ASIO_OS_DEF(IPPROTO_IPV6), 0054 BOOST_ASIO_OS_DEF(IPV6_JOIN_GROUP)> join_group; 0055 #endif 0056 0057 /// Socket option to leave a multicast group on a specified interface. 0058 /** 0059 * Implements the IPPROTO_IP/IP_DROP_MEMBERSHIP socket option. 0060 * 0061 * @par Examples 0062 * Setting the option to leave a multicast group: 0063 * @code 0064 * boost::asio::ip::udp::socket socket(my_context); 0065 * ... 0066 * boost::asio::ip::address multicast_address = 0067 * boost::asio::ip::address::from_string("225.0.0.1"); 0068 * boost::asio::ip::multicast::leave_group option(multicast_address); 0069 * socket.set_option(option); 0070 * @endcode 0071 * 0072 * @par Concepts: 0073 * SettableSocketOption. 0074 */ 0075 #if defined(GENERATING_DOCUMENTATION) 0076 typedef implementation_defined leave_group; 0077 #else 0078 typedef boost::asio::ip::detail::socket_option::multicast_request< 0079 BOOST_ASIO_OS_DEF(IPPROTO_IP), 0080 BOOST_ASIO_OS_DEF(IP_DROP_MEMBERSHIP), 0081 BOOST_ASIO_OS_DEF(IPPROTO_IPV6), 0082 BOOST_ASIO_OS_DEF(IPV6_LEAVE_GROUP)> leave_group; 0083 #endif 0084 0085 /// Socket option for local interface to use for outgoing multicast packets. 0086 /** 0087 * Implements the IPPROTO_IP/IP_MULTICAST_IF socket option. 0088 * 0089 * @par Examples 0090 * Setting the option: 0091 * @code 0092 * boost::asio::ip::udp::socket socket(my_context); 0093 * ... 0094 * boost::asio::ip::address_v4 local_interface = 0095 * boost::asio::ip::address_v4::from_string("1.2.3.4"); 0096 * boost::asio::ip::multicast::outbound_interface option(local_interface); 0097 * socket.set_option(option); 0098 * @endcode 0099 * 0100 * @par Concepts: 0101 * SettableSocketOption. 0102 */ 0103 #if defined(GENERATING_DOCUMENTATION) 0104 typedef implementation_defined outbound_interface; 0105 #else 0106 typedef boost::asio::ip::detail::socket_option::network_interface< 0107 BOOST_ASIO_OS_DEF(IPPROTO_IP), 0108 BOOST_ASIO_OS_DEF(IP_MULTICAST_IF), 0109 BOOST_ASIO_OS_DEF(IPPROTO_IPV6), 0110 BOOST_ASIO_OS_DEF(IPV6_MULTICAST_IF)> outbound_interface; 0111 #endif 0112 0113 /// Socket option for time-to-live associated with outgoing multicast packets. 0114 /** 0115 * Implements the IPPROTO_IP/IP_MULTICAST_TTL socket option. 0116 * 0117 * @par Examples 0118 * Setting the option: 0119 * @code 0120 * boost::asio::ip::udp::socket socket(my_context); 0121 * ... 0122 * boost::asio::ip::multicast::hops option(4); 0123 * socket.set_option(option); 0124 * @endcode 0125 * 0126 * @par 0127 * Getting the current option value: 0128 * @code 0129 * boost::asio::ip::udp::socket socket(my_context); 0130 * ... 0131 * boost::asio::ip::multicast::hops option; 0132 * socket.get_option(option); 0133 * int ttl = option.value(); 0134 * @endcode 0135 * 0136 * @par Concepts: 0137 * GettableSocketOption, SettableSocketOption. 0138 */ 0139 #if defined(GENERATING_DOCUMENTATION) 0140 typedef implementation_defined hops; 0141 #else 0142 typedef boost::asio::ip::detail::socket_option::multicast_hops< 0143 BOOST_ASIO_OS_DEF(IPPROTO_IP), 0144 BOOST_ASIO_OS_DEF(IP_MULTICAST_TTL), 0145 BOOST_ASIO_OS_DEF(IPPROTO_IPV6), 0146 BOOST_ASIO_OS_DEF(IPV6_MULTICAST_HOPS)> hops; 0147 #endif 0148 0149 /// Socket option determining whether outgoing multicast packets will be 0150 /// received on the same socket if it is a member of the multicast group. 0151 /** 0152 * Implements the IPPROTO_IP/IP_MULTICAST_LOOP socket option. 0153 * 0154 * @par Examples 0155 * Setting the option: 0156 * @code 0157 * boost::asio::ip::udp::socket socket(my_context); 0158 * ... 0159 * boost::asio::ip::multicast::enable_loopback option(true); 0160 * socket.set_option(option); 0161 * @endcode 0162 * 0163 * @par 0164 * Getting the current option value: 0165 * @code 0166 * boost::asio::ip::udp::socket socket(my_context); 0167 * ... 0168 * boost::asio::ip::multicast::enable_loopback option; 0169 * socket.get_option(option); 0170 * bool is_set = option.value(); 0171 * @endcode 0172 * 0173 * @par Concepts: 0174 * GettableSocketOption, SettableSocketOption. 0175 */ 0176 #if defined(GENERATING_DOCUMENTATION) 0177 typedef implementation_defined enable_loopback; 0178 #else 0179 typedef boost::asio::ip::detail::socket_option::multicast_enable_loopback< 0180 BOOST_ASIO_OS_DEF(IPPROTO_IP), 0181 BOOST_ASIO_OS_DEF(IP_MULTICAST_LOOP), 0182 BOOST_ASIO_OS_DEF(IPPROTO_IPV6), 0183 BOOST_ASIO_OS_DEF(IPV6_MULTICAST_LOOP)> enable_loopback; 0184 #endif 0185 0186 } // namespace multicast 0187 } // namespace ip 0188 } // namespace asio 0189 } // namespace boost 0190 0191 #include <boost/asio/detail/pop_options.hpp> 0192 0193 #endif // BOOST_ASIO_IP_MULTICAST_HPP
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |