⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic_datagram_socket.hpp

📁 LINUX下
💻 HPP
📖 第 1 页 / 共 3 页
字号:
   * @returns The number of bytes received.   *   * @note The receive operation can only be used with a connected socket. Use   * the receive_from function to receive data on an unconnected datagram   * socket.   */  template <typename MutableBufferSequence>  std::size_t receive(const MutableBufferSequence& buffers,      socket_base::message_flags flags, asio::error_code& ec)  {    return this->service.receive(this->implementation, buffers, flags, ec);  }  /// Start an asynchronous receive on a connected socket.  /**   * This function is used to asynchronously receive data from the datagram   * socket. The function call always returns immediately.   *   * @param buffers One or more buffers into which the data will be received.   * Although the buffers object may be copied as necessary, ownership of the   * underlying memory blocks is retained by the caller, which must guarantee   * that they remain valid until the handler is called.   *   * @param handler The handler to be called when the receive operation   * completes. Copies will be made of the handler as required. The function   * signature of the handler must be:   * @code void handler(   *   const asio::error_code& error, // Result of operation.   *   std::size_t bytes_transferred           // Number of bytes received.   * ); @endcode   * Regardless of whether the asynchronous operation completes immediately or   * not, the handler will not be invoked from within this function. Invocation   * of the handler will be performed in a manner equivalent to using   * asio::io_service::post().   *   * @note The async_receive operation can only be used with a connected socket.   * Use the async_receive_from function to receive data on an unconnected   * datagram socket.   *   * @par Example   * To receive into a single data buffer use the @ref buffer function as   * follows:   * @code   * socket.async_receive(asio::buffer(data, size), handler);   * @endcode   * See the @ref buffer documentation for information on receiving into   * multiple buffers in one go, and how to use it with arrays, boost::array or   * std::vector.   */  template <typename MutableBufferSequence, typename ReadHandler>  void async_receive(const MutableBufferSequence& buffers, ReadHandler handler)  {    this->service.async_receive(this->implementation, buffers, 0, handler);  }  /// Start an asynchronous receive on a connected socket.  /**   * This function is used to asynchronously receive data from the datagram   * socket. The function call always returns immediately.   *   * @param buffers One or more buffers into which the data will be received.   * Although the buffers object may be copied as necessary, ownership of the   * underlying memory blocks is retained by the caller, which must guarantee   * that they remain valid until the handler is called.   *   * @param flags Flags specifying how the receive call is to be made.   *   * @param handler The handler to be called when the receive operation   * completes. Copies will be made of the handler as required. The function   * signature of the handler must be:   * @code void handler(   *   const asio::error_code& error, // Result of operation.   *   std::size_t bytes_transferred           // Number of bytes received.   * ); @endcode   * Regardless of whether the asynchronous operation completes immediately or   * not, the handler will not be invoked from within this function. Invocation   * of the handler will be performed in a manner equivalent to using   * asio::io_service::post().   *   * @note The async_receive operation can only be used with a connected socket.   * Use the async_receive_from function to receive data on an unconnected   * datagram socket.   */  template <typename MutableBufferSequence, typename ReadHandler>  void async_receive(const MutableBufferSequence& buffers,      socket_base::message_flags flags, ReadHandler handler)  {    this->service.async_receive(this->implementation, buffers, flags, handler);  }  /// Receive a datagram with the endpoint of the sender.  /**   * This function is used to receive a datagram. The function call will block   * until data has been received successfully or an error occurs.   *   * @param buffers One or more buffers into which the data will be received.   *   * @param sender_endpoint An endpoint object that receives the endpoint of   * the remote sender of the datagram.   *   * @returns The number of bytes received.   *   * @throws asio::system_error Thrown on failure.   *   * @par Example   * To receive into a single data buffer use the @ref buffer function as   * follows:   * @code   * asio::ip::udp::endpoint sender_endpoint;   * socket.receive_from(   *     asio::buffer(data, size), sender_endpoint);   * @endcode   * See the @ref buffer documentation for information on receiving into   * multiple buffers in one go, and how to use it with arrays, boost::array or   * std::vector.   */  template <typename MutableBufferSequence>  std::size_t receive_from(const MutableBufferSequence& buffers,      endpoint_type& sender_endpoint)  {    asio::error_code ec;    std::size_t s = this->service.receive_from(        this->implementation, buffers, sender_endpoint, 0, ec);    asio::detail::throw_error(ec);    return s;  }    /// Receive a datagram with the endpoint of the sender.  /**   * This function is used to receive a datagram. The function call will block   * until data has been received successfully or an error occurs.   *   * @param buffers One or more buffers into which the data will be received.   *   * @param sender_endpoint An endpoint object that receives the endpoint of   * the remote sender of the datagram.   *   * @param flags Flags specifying how the receive call is to be made.   *   * @returns The number of bytes received.   *   * @throws asio::system_error Thrown on failure.   */  template <typename MutableBufferSequence>  std::size_t receive_from(const MutableBufferSequence& buffers,      endpoint_type& sender_endpoint, socket_base::message_flags flags)  {    asio::error_code ec;    std::size_t s = this->service.receive_from(        this->implementation, buffers, sender_endpoint, flags, ec);    asio::detail::throw_error(ec);    return s;  }    /// Receive a datagram with the endpoint of the sender.  /**   * This function is used to receive a datagram. The function call will block   * until data has been received successfully or an error occurs.   *   * @param buffers One or more buffers into which the data will be received.   *   * @param sender_endpoint An endpoint object that receives the endpoint of   * the remote sender of the datagram.   *   * @param flags Flags specifying how the receive call is to be made.   *   * @param ec Set to indicate what error occurred, if any.   *   * @returns The number of bytes received.   */  template <typename MutableBufferSequence>  std::size_t receive_from(const MutableBufferSequence& buffers,      endpoint_type& sender_endpoint, socket_base::message_flags flags,      asio::error_code& ec)  {    return this->service.receive_from(this->implementation, buffers,        sender_endpoint, flags, ec);  }  /// Start an asynchronous receive.  /**   * This function is used to asynchronously receive a datagram. The function   * call always returns immediately.   *   * @param buffers One or more buffers into which the data will be received.   * Although the buffers object may be copied as necessary, ownership of the   * underlying memory blocks is retained by the caller, which must guarantee   * that they remain valid until the handler is called.   *   * @param sender_endpoint An endpoint object that receives the endpoint of   * the remote sender of the datagram. Ownership of the sender_endpoint object   * is retained by the caller, which must guarantee that it is valid until the   * handler is called.   *   * @param handler The handler to be called when the receive operation   * completes. Copies will be made of the handler as required. The function   * signature of the handler must be:   * @code void handler(   *   const asio::error_code& error, // Result of operation.   *   std::size_t bytes_transferred           // Number of bytes received.   * ); @endcode   * Regardless of whether the asynchronous operation completes immediately or   * not, the handler will not be invoked from within this function. Invocation   * of the handler will be performed in a manner equivalent to using   * asio::io_service::post().   *   * @par Example   * To receive into a single data buffer use the @ref buffer function as   * follows:   * @code socket.async_receive_from(   *     asio::buffer(data, size), 0, sender_endpoint, handler); @endcode   * See the @ref buffer documentation for information on receiving into   * multiple buffers in one go, and how to use it with arrays, boost::array or   * std::vector.   */  template <typename MutableBufferSequence, typename ReadHandler>  void async_receive_from(const MutableBufferSequence& buffers,      endpoint_type& sender_endpoint, ReadHandler handler)  {    this->service.async_receive_from(this->implementation, buffers,        sender_endpoint, 0, handler);  }  /// Start an asynchronous receive.  /**   * This function is used to asynchronously receive a datagram. The function   * call always returns immediately.   *   * @param buffers One or more buffers into which the data will be received.   * Although the buffers object may be copied as necessary, ownership of the   * underlying memory blocks is retained by the caller, which must guarantee   * that they remain valid until the handler is called.   *   * @param sender_endpoint An endpoint object that receives the endpoint of   * the remote sender of the datagram. Ownership of the sender_endpoint object   * is retained by the caller, which must guarantee that it is valid until the   * handler is called.   *   * @param flags Flags specifying how the receive call is to be made.   *   * @param handler The handler to be called when the receive operation   * completes. Copies will be made of the handler as required. The function   * signature of the handler must be:   * @code void handler(   *   const asio::error_code& error, // Result of operation.   *   std::size_t bytes_transferred           // Number of bytes received.   * ); @endcode   * Regardless of whether the asynchronous operation completes immediately or   * not, the handler will not be invoked from within this function. Invocation   * of the handler will be performed in a manner equivalent to using   * asio::io_service::post().   */  template <typename MutableBufferSequence, typename ReadHandler>  void async_receive_from(const MutableBufferSequence& buffers,      endpoint_type& sender_endpoint, socket_base::message_flags flags,      ReadHandler handler)  {    this->service.async_receive_from(this->implementation, buffers,        sender_endpoint, flags, handler);  }};} // namespace asio#include "asio/detail/pop_options.hpp"#endif // ASIO_BASIC_DATAGRAM_SOCKET_HPP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -