我開始使用Boost Asio的TCP套接字。 read_some
和receive
之間的區別是什麼,write_some
和send
之間的區別是什麼?謝謝!read_some/write_some和receive/send之間的區別?
10
A
回答
8
據我記得,read_some和收到實際上是一樣的。我認爲只需要調用read_some,反之亦然。在一個命名來源於治療插座爲文件(讀/寫)的想法,而另一人,而來自於連接(發送/接收)的觀點。 write_some和發送也應如此。
0
相同。 。都調用了這個 - > get_service()發送()
/// Send some data on the socket.
/**
* This function is used to send data on the stream socket. The function
* call will block until one or more bytes of the data has been sent
* successfully, or an until error occurs.
*
* @param buffers One or more data buffers to be sent on the socket.
*
* @returns The number of bytes sent.
*
* @throws boost::system::system_error Thrown on failure.
*
* @note The send operation may not transmit all of the data to the peer.
* Consider using the @ref write function if you need to ensure that all data
* is written before the blocking operation completes.
*
* @par Example
* To send a single data buffer use the @ref buffer function as follows:
* @code
* socket.send(boost::asio::buffer(data, size));
* @endcode
* See the @ref buffer documentation for information on sending multiple
* 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;
}
////////////////////////////////////////////
template <typename ConstBufferSequence>
std::size_t write_some(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, "write_some");
return s;
}
從basic_stream_socket.hpp
4
在BOOST ASIO documentation,部分TCP客戶端說:
的數據可以被讀取或寫入到receive(),async_receive(),send()或async_send()成員函數使用 連接的TCP套接字。 然而,因爲這些可能導致short writes or reads, 應用程序通常會使用以下操作來代替: 的read(),async_read(),write()方法和ASYNC_WRITE()。
相關問題
- 1. 之間的〜/和的區別../
- 2. '#','%'和'$'之間的區別
- 3. {!!之間的區別!!}和{{}}
- 4. '+ ='和'= +'之間的區別?
- 5. 「。+」和「。+?」之間的區別
- 6. .eq之間的區別。和==
- 7. #。/和#之間的區別。 ./
- 8. !=和!之間的區別==
- 9. 「%〜dp0」和「。\」之間的區別?
- 10. | =和^ = css之間的區別
- 11. 之間的區別。和#
- 12. ==和case之間的區別?
- 13. 「**/* /」和「** /」之間的區別?
- 14. jQuery - '。'之間的區別和「#」
- 15. 「?1」和「?」之間的區別
- 16. `%in%`和`==`之間的區別
- 17. fmod和%之間的區別
- 18. 之間的區別:+和:+
- 19. 類區域和堆之間的區別
- 20. SPFile和PublishingPage類別之間的區別
- 21. 子類和類別之間的區別?
- 22. System.Timers.Timer Enabled = true和.Start()之間的區別Enabled = true和.Start()之間的區別
- 23. isForeground()和onExposed和onObscured之間的區別
- 24. $ .ajax()和$ .get()和$ .load()之間的區別
- 25. 和intent和setcontentview之間的區別
- 26. Java和C#和.NET之間的區別
- 27. NSthread和NStimer和NSNotifcation之間的區別?
- 28. sys.log()和console.log()和console.error()之間的區別?
- 29. 關注與責任之間的區別(即SRP和SoC之間的區別)?
- 30. make中的「$(shell ...)」和「$$(...)」之間的區別
你有一定的參考/鏈接?我在boost文檔中找不到任何內容,boost示例不使用'send' /'receive'。 – overcoder