Boost :: Asio operazioni di lettura / scrittura
-
22-07-2019 - |
Domanda
Qual è la differenza tra chiamare le funzioni membro boost :: asio :: ip :: tcp :: socket
read_some
/ write_some
e chiamare le funzioni gratuite boost :: asio :: read
/ boost :: asio :: write
?
Più specificamente:
C'è qualche vantaggio nell'usare l'uno rispetto all'altro?
Perché entrambi sono inclusi nella libreria?
Soluzione
read_some e write_some possono tornare non appena viene trasferito anche un singolo byte. Pertanto, è necessario eseguire il ciclo se si desidera assicurarsi di ottenere tutti i dati, ma questo potrebbe essere quello che si desidera.
Le funzioni gratuite sono wrapper per read_some e write_some e hanno condizioni di terminazione diverse a seconda del sovraccarico. In genere attendono che il buffer sia completamente trasferito (o si verifichi un errore o in alcuni sovraccarichi si verifichi una condizione di completamento esplicito)