在OnReceive里进行处理
len = m_sock->Receive(rBuf, 2048);
ProcessData(rBuf, len);
我想问的是如果一次ProcessData尚未处理完 又有数据发过来 这时会不会有数据丢失
一般不会,你可以这样用
我来瞎说几句吧!哈哈,别怕,我说的应该还有些谱。
一个socket当他被创建的时候,系统会开辟一个system buffer与它关连。无论发送或是接收都是先通过这个缓冲区的。
下面我谈一下几种事件的触发条件:
OnReceive:当你的缓冲区中,一有东东的时候,即会触发这个消息,还调用此信息函数,如你在这个函数里面如果调用了len = m_sock->Receive(rBuf, 2048),它将会把system buffer中的数据剪裁到rBuf中,所以如果一次ProcessData尚未处理完 又有数据发过来 这时不会有数据丢失,它只将数据放入system buffer,除非这个buffer爆掉。
本来还想说一下最难搞的OnSend函数的,但长了点再加之本人表达能力不甚,等下回我组织一下语言再来瞎说吧!!如有不对之处,望告之。
涉及阻塞的问题了吧,这用不着考虑