Boost :: Asio operações de leitura / gravação
-
22-07-2019 - |
Pergunta
Qual é a diferença entre chamar funções membro boost::asio::ip::tcp::socket
/ read_some
de write_some
e chamando o boost::asio::read
/ boost::asio::write
funções livre?
Mais especificamente:
Há algum benefício de usar um sobre o outro?
Por que ambos incluídos na biblioteca?
Solução
read_some e write_some pode retornar assim que mesmo um único byte foi transferido. Como tal, você precisa de loop se você quiser ter certeza de obter todos os dados - mas isso pode ser o que quiser
.As funções livres são invólucros em torno read_some e write_some, e têm condições de rescisão diferentes, dependendo da sobrecarga. Tipicamente eles esperam para o tampão a ser totalmente transferido (ou um erro de ocorrer, ou em alguns sobrecargas uma condição explícita para conclusão ocorrer)