数据接收回来后,本来就应立即处理掉,这样是比较简单的想法。但由于网络带宽有限,这时就需要限制UDP接收数据的速度。下面就来分析这种需求的实现,它的代码如下: #001 S32 LLPacketRing::receivePacket (S32 socket, char *datap) #002 { #003 S32 packet_size = 0; #004 下面判断是否使用接收的流量限制。 #005 // If using the throttle, simulate a limited size input buffer. #006 if (mUseInThrottle) #007 { #008 BOOL done = FALSE; #009 #010 // push any current net packet (if any) onto delay ring 下面开始循环地接收数据,并且判断是否到达流量的最大值。 #011 while (!done) #012 { #013 LLPacketBuffer *packetp; #014 packetp = new LLPacketBuffer(socket); #015 上面创建LLPacketBuffer对象来接收数据。 #016 if (packetp->getSize()) #017 { #018 mActualBitsIn += packetp->getSize() * 8; #019 #020 // Fake packet loss #021 &n |