客户端最大小于200,并发请求数小于20
我现在用的是accept加线程池这种模型可以满足吗

解决方案 »

  1.   

    我看了另一个成熟的消息软件,它用的是WSAEventSelect,发消息时只要send就可以了,只在打开程序时建立,退出程序时关闭,而我现在却每一次请求都要建立--连接--发送--关闭,可能会慢一点,不知道他的这种方式难度及性能如何?
      

  2.   

    长连接的数据传输性能高于短连接。不过S和C到底是长连接和短连接,要遵循协商好的通信协议。也有长短连接都支持的。如果你对数据传输速度要求不高,你的通信规模短连接也足够了。WSAEventSelect在SERVER伸缩性的测试中和Overlapped相当,仅次于完成端口,但是限制在于投递IO操作的可等待事件最多64,超过64,Server的设计就复杂一些,你的规模和速率如能确定下来。这几种模型都差不多。
    长短连接的问题,当然是长连接快,但要做好链接检测,短连接慢,但不用做链接检测,能简单一些
      

  3.   

    完成端口好用不好写,写得不好性能未毕高得起来。
    WSAEventSelect 就能搞定楼主的问题了,也可能考虑用ACE 
      

  4.   

    长链接检测,指的是客户端和服务端协商一个心跳包的发送和应答,在没有数据传输的情况下,服务端或客户端定时发送心跳数据包,另一方应答,确认此套接字的连接在一定时间内正常,如果超时,则发起方主动中断此套接字上的链接,或者重新连接,链接检测可以放在一个单独的线程去处理在有数据传输的情况下,在每次WSASend或者WSARecv之前最好检查一下,链接正常的标志,如果链接检测置该标志为无法链接,那么就要启动重新连接的功能,再重试一定次数之后,确认链接无法,置标志该链接已死,放弃该套接字上的所有WSASend和Recv。由于客户端和服务端各自的处理方式不一样。根据实际协议灵活处理就好至于短链接,因为每次都是连接上才发送,发送完就断开,链接检测就不必单独的去做了
      

  5.   

    我也觉得windows下,不管3721完成端口,毕竟这种东西写多了也就那么回事。也许写不好可能达不到非常好的要求,但是也差不到哪里去。