C++ 对于游戏服务器,最合适的boost::asio读/写方法是什么?

C++ 对于游戏服务器,最合适的boost::asio读/写方法是什么?,c++,boost,boost-asio,C++,Boost,Boost Asio,我正在使用boost::asio来创建套接字网络。该库有许多不同的发送和接收数据的方法,每种方法都执行类似的任务,但略有不同 对于发送数据,boost提供以下功能: 对于接收数据,boost提供以下功能: 其中,哪一个最适合用于游戏服务器,以及为什么?自由函数是由操作组成的async\u read()和async\u write()自由函数。它们通过零次或多次调用流的async\u read\u some()或async\u write\u some()方法来实现 在异步操作完成之前

我正在使用boost::asio来创建套接字网络。该库有许多不同的发送和接收数据的方法,每种方法都执行类似的任务,但略有不同

对于发送数据,boost提供以下功能:

对于接收数据,boost提供以下功能:

其中,哪一个最适合用于游戏服务器,以及为什么?

自由函数是由操作组成的
async\u read()
async\u write()
自由函数。它们通过零次或多次调用流的
async\u read\u some()
async\u write\u some()
方法来实现

在异步操作完成之前,成员函数不能发送或接收所有数据。如果需要,应该使用自由函数。
async\u read()
async\u write()
自由函数是组合操作。它们通过零次或多次调用流的
async\u read\u some()
async\u write\u some()
方法来实现


在异步操作完成之前,成员函数不能发送或接收所有数据。如果您希望这样做,您应该使用免费函数。

问题已经得到了回答,但也值得一提的是,
async\u write\u有些
async\u send
完全相同,命名只是为了一致性,因为“send”适用于套接字,“write”适用于流

另一个需要注意的要点是,
async\u write
free函数是Chris Kohlhoff所称的“组合操作”,这意味着即使它立即返回,在调用关联的处理程序之前调用另一个
async\u write
是不安全的-如果没有预料到,这可能会导致各种问题。
async\u write\u some
函数的级别较低,不受此影响


进一步阅读:

这个问题已经得到了回答,但也值得一提的是,
async\u write\u有些
async\u send
的功能完全相同,命名只是为了保持一致性,因为“send”适用于套接字,“write”适用于流

另一个需要注意的要点是,
async\u write
free函数是Chris Kohlhoff所称的“组合操作”,这意味着即使它立即返回,在调用关联的处理程序之前调用另一个
async\u write
是不安全的-如果没有预料到,这可能会导致各种问题。
async\u write\u some
函数的级别较低,不受此影响

进一步阅读: