别的废话不多说了,基本流程和TCP下一样,只不过说一点需要注意的。
在WSARecvFrom成功以后,IOCP得到了投递,处理完了这个数据,这个时候应该重新发起一个WSARecvFrom投递了,这个时候要特别注意,
不要重新分配一个Overlapped,而要复用当前这个,不然在GetQueued的时候,会报错,报0xC000000005,读取0x00000010错误。

网上的IOCP都是TCP的,UDP的资料太少,这里提出一个要注意的地方,以使后来人避免走弯路
posted on 2008-07-29 16:52 亨德列克 阅读(6878) 评论(11)  编辑 收藏 引用
Comments
  • # re: UDP使用IOCP
    孤单
    Posted @ 2008-08-03 14:26
    问题是UDP有必要用IOCP吗.根本不明白TCP用IOCP的意义.UDP直接开个接受和处理循环比IOCP还IOCP了.  回复  更多评论   
  • # re: UDP使用IOCP
    亨德列克
    Posted @ 2008-08-03 19:45
    @孤单
    当你有一个服务,提供了TCP和UDP的接口,这样用IOCP去Loop会很方便,而且IOCP去Loop比自己开线程去用Block,IO吞吐量会大一些。IOCP不是TCP的专利,谢谢你的回复  回复  更多评论   
  • # re: UDP使用IOCP
    塔吉
    Posted @ 2008-10-11 01:48
    hi,hendricLee,

    我现在做一个项目,也需要再UDP中采用IOCP的方式,但一直有问题。可否将这部分源码共享一下呢?
    我的信箱是windteller@163.com
    谢谢。  回复  更多评论   
  • # re: UDP使用IOCP
    sb1250
    Posted @ 2008-12-08 15:46
    有个问题 我第一次WSARecvFrom是失败的不知道是怎么回事
    后面用ReadFile可以 可是第一次接收到的数据 出不来 这个是怎么回事呢?
    这个问题能说明下吗?谢谢
    可以的话 也发份DEMO给我参考下 我的邮箱sb1250@163.com  回复  更多评论   
  • # re: UDP使用IOCP
    xujie
    Posted @ 2009-02-09 17:56
    看到您关于UDP接收时应注意的事项非常有启发.但是按照您这个思路去修改调用WSARecvFrom的逻辑,在局网依然出现0xC000000005,读取0x00000010错误。而程序在本机两个UDP端口之间对跑时不出任何问题。如果方便的话能够将Demo发给我一份?xujie@goumang.com  回复  更多评论   
  • # re: UDP使用IOCP
    Aking
    Posted @ 2009-03-18 13:54
    原来还有这个注意事项呀。

    我开始还在考虑,开个线程专门去投递一定的WSARecvFrom。
    这样意味着,同时只能投递一个WSARecvFrom了哦?

    博主能不能加我的qq(85623288)或msn(x1aon1ao@hotmail.com),请教些东西,我在实现UDP使用IOCP的过程中出现了点问题
      回复  更多评论   
  • # re: UDP使用IOCP
    doorkey
    Posted @ 2009-04-06 14:13
    楼主,如果一次只能投递一个 WSARecvFrom 那用IOCP的UDP和直接用一个线程一直来Rec UDP那有什么大的区别呢??

      回复  更多评论   
  • # re: UDP使用IOCP
    亨德列克
    Posted @ 2009-04-06 23:34
    @doorkey
    如果你是TCP和UDP混着用,那么可以考虑用IOCP;如果只用UDP,用不用IOCP确实没有区别  回复  更多评论   
  • # re: UDP使用IOCP
    doorkey
    Posted @ 2009-04-07 12:34
    我自己写了一下,UDP的IOCP完全可以用一个线程来
    投递多个 WSARecvFrom 的。  回复  更多评论   
  • # re: UDP使用IOCP
    doorkey
    Posted @ 2009-04-07 12:34

    楼主能不能加我的QQ:9717005 交流交流。  回复  更多评论   
  • # re: UDP使用IOCP
    刘志
    Posted @ 2009-07-16 18:45
    可否共享一下??
    我的邮件地址:Email.liuzhihong@gmail.com  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理