增强Asio UDP日间服务器异步接收

时间:2013-09-24 18:00:16

标签: c++ sockets boost udp boost-asio

我最近一直在学习提升asio,尤其是UDP。我熟悉基础知识,但有一个关于UDP如何处理传入消息的问题。在本教程中(参见此处的源代码:http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/tutorial/tutdaytime6/src.html),UDP服务器的操作类似于(非常伪代码):

startReceive(){
    async_receive(boost::bind(handler),...other params);
}

handler(){
    doStuffToDataReceived();
    startReceive(); //start the receiving process over again to allow it to receive more data
}

我的问题是,如果数据在“doStuffToDataReceived()”期间到达服务器,在startReceives重新开始之前,该数据是否会丢失,或者它是否在那里等待startReceive再次发生然后立即检索?

谢谢!

1 个答案:

答案 0 :(得分:0)

UDP堆栈有一个缓冲区,因此上例中的数据不会丢失。

但请注意,允许UDP在各种情况下丢弃数据包。因此,随着UDP服务器吞吐量的增长,doStuffToDataReceived的时间可能变得更加重要。