lion_code 2015-10-17 14:39 采纳率: 0%
浏览 3366

CSocket类中OnReceive()函数被重写后,为什么还要调用CSocket::OnReceive.

1.CSocket类中OnReceive()函数被重写后,为什么还要调用CSocket::OnReceive.
2.被重写的Onreceive()函数什么时候会被调用,该函数中使用了Receive()方法。我没有使用定时器机制,会不会造成阻塞。

感谢您的耐心解答

  • 写回答

3条回答 默认 最新

  • shiter 人工智能领域优质创作者 2015-10-17 14:53
    关注

    1.重写就是实现自己的业务逻辑啊
    2.当socket的接收缓冲区有新数据时,OnReceive被调用。 当缓冲区空了以后,再有新数据以后,才会触发。假如你在连续的Receive,在这个过程中数据假如源源不断,是不会有OnReceive的。因此一般期望在一个WSAEWOULDBLOCK失败的Receive后,再等待onreceive

    3.正确的做法是
    在OnReceive事件中只能调用一次的Receive

    如果调用两次,就会因为此时还没有后续数据到达导致阻塞

    如果判断数据未接收完整需先将数据放在自定义的缓冲区内,然后等待下一次的OnReceive

    评论

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题