Frage zu Boost asio - unterschiede read und receive



  • Hi,

    ich hab da mal ne Frage zu boost::asio... und zwar... dort gibt es die Klasse boost::asio::tcp::socket und diese hat unter anderem folgende Methoden:

    async_read und async_receive

    was ist denn genau der unterschied zwischen read und receive? Wann nimmt man was?

    Danke schonmal

    Grüßle Sulo


  • Administrator

    Steht doch in der Dokumentation zu async_receive :

    The receive operation may not receive all of the requested number of bytes. Consider using the async_read function if you need to ensure that the requested amount of data is received before the asynchronous operation completes.

    Grüssli



  • Die richtige Frage wäre wohl: Was ist der Unterschied zwischen (async)receive und (async)read_some. Der einzige Unterschied den ich sehe ist dass receive noch ein paar Flags nehmen kann. Bis jetzt habe ich in der Doku aber nichts darüber gefunden.

    Edit:
    Ah, das scheinen die flags zu sein:

    /// Peek at incoming data without removing it from the input queue.
      static const int message_peek = implementation_defined;
    
      /// Process out-of-band data.
      static const int message_out_of_band = implementation_defined;
    
      /// Specify that the data should not be subject to routing.
      static const int message_do_not_route = implementation_defined;
    


  • Sind beide identisch. read_some soll die Nähe zu iostreams aufzeigen und receive die Nähe zu Sockets. Quasi zwei Namen für die gleiche Funktion, wobei je nach Betrachtung der eine oder andere Name verwendet wird.


Log in to reply