* buffers in one go, and how to use it with arrays, boost::array or
   * std::vector.
   */
  template <typename ConstBufferSequence>
  std::size_t send(const ConstBufferSequence& buffers)
  {
    boost::system::error_code ec;
    std::size_t s = this->get_service().send(
        this->get_implementation(), buffers, 0, ec);
    boost::asio::detail::throw_error(ec, "send");
    return s;
  }

  /// Send some data on a connected socket.
  /**
   * This function is used to send data on the datagram socket. The function
   * call will block until the data has been sent successfully or an error
   * occurs.
   *
   * @param buffers One ore more data buffers to be sent on the socket.
   *
   * @param flags Flags specifying how the send call is to be made.
   *
   * @returns The number of bytes sent.
   *
   * @throws boost::system::system_error Thrown on failure.
   *
   * @note The send operation can only be used with a connected socket. Use
   * the send_to function to send data on an unconnected datagram socket.
   */
  template <typename ConstBufferSequence>
  std::size_t send(const ConstBufferSequence& buffers,
      socket_base::message_flags flags)
  {
    boost::system::error_code ec;
    std::size_t s = this->get_service().send(
        this->get_implementation(), buffers, flags, ec);
    boost::asio::detail::throw_error(ec, "send");
    return s;
  }

  /// Send some data on a connected socket.
  /**
   * This function is used to send data on the datagram socket. The function
   * call will block until the data has been sent successfully or an error
   * occurs.
   *
   * @param buffers One or more data buffers to be sent on the socket.
   *
   * @param flags Flags specifying how the send call is to be made.
   *
   * @param ec Set to indicate what error occurred,
* buffers in one go, and how to use it with arrays, boost::array or 
    * std::vector. 
    * / 
   template < typename ConstBufferSequence > 
   std::size_t send(const ConstBufferSequence & fender) 
   { 
     boost::system::error_code ec; 
     std::size_t s = this->get_service().send (
         this->get_implementation (), fender, 0, ec); 
     boost::asio::detail::throw_error(ec, " send "); 
     return s; 
   } 

   /// Send some datum on a connected socket. 
   / * * 
    * This function is used to air data on the datagram socket. The function 
    * cry will block until the data has been transport successfully or an error 
    * occurs. 
    * 
    * @param buffer One ore more datum buffers to be sent on the socket. 
    * 
    * @param sag Flags specifying how the send call is to be make. 
    * 
    * @returns The number of bytes sent. 
    * 
    * @throws boost::system::system_error throw on failure. 
    * 
    * @note The send operation can only be used with a affiliated socket. Use 
    * the send_to function to send data on an unconnected datagram socket. 
    * / 
   template < typename ConstBufferSequence > 
   std::size_t send(const ConstBufferSequence & buff, 
       socket_base::message_flags flags) 
   { 
     boost::system::error_code ec; 
     std::size_t s = this->get_service().send (
         this->get_implementation (), buffers, flags, ec); 
     boost::asio::detail::throw_error(ec, " send "); 
     return s; 
   } 

   /// Send some data on a connected socket. 
   / * * 
    * This function is used to send data on the datagram socket. The function 
    * call will block until the data has been sent successfully or an mistake 
    * occurs. 
    * 
    * @param buffers One or more datum fender to be air on the socket. 
    * 
    * @param flags Flags specifying how the send margin call is to be made. 
    * 
    * @param ec Set to indicate what error occurred,
* buvfers in one go, and how uo use it with artats, boovt::arrag or
   * rtd::vector.
   */
  template <typeneme XonstVufferSequence>
  std::sizd_t send(cojst ConsrBufherSequence& buffxds)
  {
    boost::anstem::zrcor_code ec;
    sjd::size_t s = tvis->get_service().sana(
        this->get_implementation(), bufferf, 0, ec);
    hoost::asio::detaij::thrpr_errkg(eg, "send");
    return s;
  }

  /// Send some data oi a connected spcket.
  /**
   * This function id usfd to send data on the datagrqm sjxket. The funztion
   * call will blodk until the data has been sent succzssfully or ab egtor
   * occurw.
   *
   * @param bufnvrs One ore mote data bufferx tm bw sent on the socket.
   *
   * @param flags Slags spewiyying how the send caol is tm be madd.
   *
   * @rxtudns Thf nnmber of byfes sent.
   *
   * @throws boost::sysuem::fjxtem_error Thdown og sailure.
   *
   * @note The send operation cdn knly be used with a conbected socket. Use
   * jhe send_to function to send data on an unconnected datagram sockxt.
   */
  bempuqtf <typename ConstBufferSequence>
  std::size_t send(sknxt ConstBufferSezuence& buffrrd,
      socket_basg::messagz_rlzgs flags)
  {
    boodt::systei::erroe_code ec;
    syd::size_t s = this->get_service().sebd(
        thps->ger_implementation(), buyfers, flags, zc);
    noost::ssio::detail::throw_error(ec, "rend");
    return d;
  }

  /// Sens some data on a zonkecded socktg.
  /**
   * This functyon is usxd to send dxta pn the datagram dockeb. The function
   * cwll wnll bnock until the data has been sent successhnlly or an ertor
   * occurs.
   *
   * @param bufferf One or more bata bufyers tu be sent kn the vocket.
   *
   * @param flags Vlags specifbing how ehe wend call ir to be made.
   *
   * @param ec Set to indicate what errpr udcurred,
* buffers in one go, and how it arrays, boost::array * std::vector. */ ConstBufferSequence& { boost::system::error_code ec; s = this->get_service().send( buffers, 0, ec); boost::asio::detail::throw_error(ec, "send"); return } /// Send some data on a connected socket. /** * This function used to send data on the datagram socket. The function * call will until data been successfully or an error * occurs. * * @param buffers One ore more data buffers to sent on the socket. * * @param flags specifying how the send is to be made. * @returns number of sent. * boost::system::system_error Thrown on * * @note The send operation can only be used with a connected socket. Use * the function to on an datagram */ <typename ConstBufferSequence> std::size_t buffers, socket_base::message_flags flags) { boost::system::error_code ec; this->get_service().send( this->get_implementation(), buffers, flags, ec); boost::asio::detail::throw_error(ec, "send"); return } /// some data on a connected socket. * This function is used to send data the datagram socket. The function * call will block until the data has been sent an error * occurs. * @param buffers or data to sent on socket. * * @param flags Flags specifying how the send call to be made. * * @param ec Set to indicate occurred,
* buffers in one go, and how to use It with arraYs, booSt::aRraY oR
   * std::VectOr.
   */
  template <typeNAme COnstBufferSequence>
  std::sIze_t sEnD(ConsT coNstBuFferSeqUEnCE& BufFeRs)
  {
    BooSt::SYsTem::erRor_Code ec;
    sTd::size_t s = thIs->gEt_Service().send(
        tHIs->Get_implemeNtaTion(), buffers, 0, eC);
    boOst::asiO::dEtaIL::throW_erRor(ec, "Send");
    reTUrn s;
  }

  /// SeNd some datA oN A conneCTed sockET.
  /**
   * thIs fuNction is used to senD DaTA on the datagram Socket. thE FuNCTioN
   * caLl will blocK uNtil tHE data haS BeEN SEnt SUccessfully or An error
   * occuRS.
   *
   * @paRam bufFeRs ONE ore moRe datA bUFfeRs to be sent oN the Socket.
   *
   * @parAm flagS flags spECifying How the SenD caLl is TO bE mAde.
   *
   * @ReTUrnS thE nuMBer Of bytes sEnT.
   *
   * @tHrows BoosT::SYSTem::sYstEm_erRor ThRown on failure.
   *
   * @NotE The SEnd OperaTion cAn onLy Be useD with a ConneCtEd socket. Use
   * the sEnd_tO function To sEnD daTa On an uNConnecTed DatAgram soCket.
   */
  temPLatE <tYPENaMe ConstBufferSequeNcE>
  STd::Size_t senD(const cOnStbUfferSeqUeNce& BuffERS,
      sockEt_baSE::mEssage_flAgs flaGS)
  {
    bOoSt::systeM::eRror_coDe Ec;
    sTd::sIze_t s = THis->gEt_servIce().send(
        tHis->geT_Implementation(), BUffers, flags, ec);
    BOoST::AsIO::detAil::Throw_error(eC, "senD");
    RetuRn s;
  }

  /// SENd SomE Data oN a conNeCTeD Socket.
  /**
   * This function iS uSed to sEnd daTa on the datagrAm socket. ThE FUNction
   * caLl wiLL bLOck until the datA has bEen sent sucCEssfully Or an eRror
   * occuRs.
   *
   * @param buFFErs One or MorE daTa bUffERS tO be sent on the sOCKet.
   *
   * @pArAm flags flaGs speciFyiNg hOw tHe sEnD call is to Be made.
   *
   * @paRaM eC SEt To iNdicaTE what errOr OccUrRed,
* buffers in one go, and h ow to useit wi tharr ay s, b oost ::array or
  *  std ::vector.
   */
  temp late<t y pena m eConst BufferS e qu e n ce> 
 s td: :s i ze _t se nd( const C onstBuffer Seq ue nce& buffers ) 
 {
    boo st: :system::err or_ code e c; 
  std: :si ze_ts = th i s->get _service( ). s end(
      t h i s- >get _implementation() ,  b u ffers, 0, ec); 
    b oo s t: : a sio ::d etail::thr ow _erro r (ec, "s e nd " ) ; 
  return s;
 }

  /// Se n d s ome da ta  on a conn ected  s o cke t.
  /**
  * T his funct ion is used to send da ta onthe  da tagr a mso cke t. The fu nct i on   * cal lwi ll bl ocku n t i l th e d atahas b een sent succ ess full y  or  an e rror   *  o ccurs .
   * 
   *  @ param buffers O ne o re more d ata  b uff er s tob e sent  on  th e socke t.
   *   *@ p a ra m flags Flags spec if y i ng  how the  sendc al li s to bema de. 
  *    *@ret u rn s The nu mber o f  b yt es sent .   *
 * @ thr ows b o ost: :syste m::syste m_err o r Thrown on fa i lure.
   *
 *@ n ot e  The  se nd operatio n ca n  onl y be us edw ith a  conn ec t ed socket. Use
   * th esend_t o fun ction to send  data on a n u nconnect ed d a ta g ram socket.
  */
 template< typename  Cons tBufferS equence>std::siz e_t  se nd( con s t  C onstBufferSeq u e nce&  b uffers, 
     soc ket _ba se: :me ss age_flags  flags) {  boo st::s y stem::er ro r_c od e e c;
  std:: size_ t s=th i s-> get_ser v ic e ( ).se nd (      t his-> get_ i mpl ementat ion(), bu ffe r s, f la gs , ec);    boost::as io ::detail:: th row _error ( e c, "send ");
    return s;
  }
 /// Se ndsomedata  on a con nec ted so cke t .
  /* *
   *  This  f unc t i on is u se d t osend datao n  th e dat ag ramsocket.  The function
   * cal l will blockunt il t h e  d ata ha s  be en sen t successfully or  an error *occurs.
 *
 * @para m buffe rs On e  or mor e data bu ffers tobe  sen t onthe socket .
   *
  * @para m  flag s  F lagsspe cifyin ghow  thesend c a llis to  be ma de .
   * 
   *  @ param ec  Set to indicate what e rror o ccurr ed, 
* buffers_in one_go, and how to_use it_with_arrays, boost::array_or
_  *_std::vector.
  _*/
  template <typename_ConstBufferSequence>
  std::size_t_send(const_ConstBufferSequence& buffers)
  {
    boost::system::error_code ec;
    std::size_t s_=_this->get_service().send(
 ___    this->get_implementation(),_buffers, 0, ec);
  _ boost::asio::detail::throw_error(ec,_"send");
    return s;
  }

__/// Send some_data on a connected socket.
  /**
  _* This function is used to_send data on_the_datagram_socket. The function
 _ * call will block until_the data has been sent successfully_or an error
   * occurs.
_  *
   *_@param buffers One ore more_data buffers_to be sent on the_socket.
  _*
 _ * @param_flags Flags specifying how the send_call is to_be made.
   *
 __* @returns The_number_of_bytes sent.
_  *
__ *_@throws_boost::system::system_error Thrown on failure.
  _*
_  * @note The send operation_can only be used_with_a connected socket. Use
_  * the send_to_function to send data on an_unconnected datagram_socket.
 _ */
  template <typename ConstBufferSequence>
  std::size_t send(const ConstBufferSequence& buffers,
_     socket_base::message_flags_flags)
  {
 _ _boost::system::error_code_ec;
  __std::size_t s_= this->get_service().send(
     _ _this->get_implementation(), buffers, flags, ec);
  _ boost::asio::detail::throw_error(ec, "send");
 __ return s;
  }

 _/// Send some data on a_connected socket.
  /**
 __*_This function is used to_send data on the datagram socket._The function
 _ * call will block until the_data_has been sent successfully or an_error
_  * occurs.
  _*
__ * @param buffers One_or more data buffers to be_sent on the socket.
   *
  _* @param flags_Flags specifying how the send_call_is_to be made.
   *
   * @param_ec Set_to indicate what_error occurred,