本帖最后由 rightorwrong 于 2009-08-18 17:41:12 编辑

解决方案 »

  1.   

    tcp和udp的数据可以一起处理么???一个是可靠传输一个是不可靠传输,这样一起处理你觉得合适么????
      

  2.   

    分别读出1,1,2个字节这样是可以的。
    但是我觉得更方便的做法是:
        在C端,接收数据的时候:
        直接在buffer的结构里面加个变nSockFlag就标识好这个是UDP或者是TCP,就是在投递WSARecv的时候,nSockFlag赋值,这样,
    GetQueuedCompletionStatus接收到一个BUFFER,直接就可以发现里面的数据是UDP或者是TCP,也就是说是否有4个字节的头,这样处理起来就很简单了。
        发送数据的时候当然,逻辑上你自己能控制。但是说起来,TCP和UDP一起,真是很麻烦,UDP还要处理丢包,拥堵,等等,还不如都用TCP,或者你处理好了UDP的丢包拥堵这些,那就全部用UDP也好过两种东西一起用。
      

  3.   

    客户端那边可以通过命令来决定它和C服务端采用什么连接来进行数据通信。
    IOCP这里我觉得无论是TCP还是UDP,只要把socket关联到完成端口。在send,recv的时候用不同的API就可以了的
      

  4.   

    iocp一般是针对tcp的,把udp分开吧,udp没有连接,不检测拥塞,也不校验,也没有重发,所以,服务端不需要iocp模型,只需要处理好异步收发包过程即可,不需要维护客户端连接情况,所以也就效率高点