我现在已经掌握了 IOCP 服务器端 编程。 
而且已经有一个较好的数据表封装类。但是,关于客户端,客户端类的IOCP应该怎么设计呢。由于没涉及过现在毫无头绪。如果用 SELECT 来绑定 , 用不了多线程吧?最主要事多线程重要。请问有什么方法吗
还是源码和教材。谢谢

解决方案 »

  1.   

    IOCP通常是处理大量socket时用的,你的客户端能有多少socket?
    用select也可以用多线程,根据实际需要而定。
    如果你只是想练习多线程,即使一个socket也可以用两个线程分别处理发送和接收。
      

  2.   

    服务器当中有用过AcceptEx吗?如果有用过应该是相当简单的,客户的时候,就用ConnectEx,跟AcceptEx那样子提交ConnectEx,只不过AcceptEx是在发的一个预接受连接操作,而ConnectEx发的是一个预连接操作,ConnectEx在发起之前就要对相关的Socket与完成端口进行绑定,后续的工作跟作为服务器的设计没啥区别.
      

  3.   

    客户端只要是要链接的ServerIP和ServerPort确定, 并按预先规定的TCP或UDP协议发送便可, 用不了多线程, 因为你是客户端嘛, 除非你所定义的是二级服务端 
      

  4.   

    客户端不需特别处理了,IOCP主要是服务端用的,它的优点就是可以同时处理大量的Socket连接
      

  5.   

    在TCP中客户端只能连接服务器建立通信线路,而UDP中服务器与客户端的界限几乎没有,一端既可做服务器也可作客户端,我认为你如果要连接IOCP服务器的话,可以考虑使用事件机制,这被大量的测试证明是性能仅次于IOCP机制的(一般小型服务器更胜于IOCP服务器),事件机制是既可用于服务器也可用于客户端,既可用于TCP也可用于UDP,所以我建议你TCP客户端使用事件机制,注册3个事件即可(写,读,连接断开),这样就不用另开线程了(当然多核还是该开的)。提醒一下,一个成功的稍微有点规模的TCP/IP网络通信架构需要大量的测试,祝你成功
      

  6.   

    客户端用那玩意干嘛?
    客户端就是一收一发也不用实时响应你用那东西干嘛
    select足够了
      

  7.   

    客户端没有必要用IOCP,可以根据情况采用其它IO模型
      

  8.   

    服务端用accept可以得到一个socket然后让它与完成端口关联,但是客户端用connect并没有返回一个socket,怎么跟完成端口关联。一直被这个问题纠结了好久。。
      

  9.   

    不知道网上为什么一大堆人被问起IOCP客户端的问题,几乎所有的回答都是:“客户端不需要用完成端口!”。我非常讨厌这种回答!!因为,既然有人问到,说明有存在!至少我知道,我要做的任务需要用到!客户端与服务端都要用iocp。2楼的回答给了我提示,虽然不是在回答我,但是表示感谢!