各位大侠,小弟现在要做一个通信程序
求完成端口或select模型的通信代码或实现机制 及线程池的具体实现方式
要求使用同步模式
WSAAsyncSelect()和WSACreateEvent()两种异步模式不予考虑我的需求是这样的:
服务器端随时监听请求,收到请求后实时处理回应.
TCP或UDP均可,通信并发数量高,要求实时性要好
每次通信的数据量都很小,在100字节以内(不会超过100字节)
局域网通信即可,每秒并发处理数量要在500以上(最低要求500)
数据的通信高峰不可预测
保证线程工作稳定,有容错和缓冲处理机制最好
是不是一定要使用线程池?不一定要有代码,请大家多出些主意,当然有代码更好
请大家踊跃指导,因级别有限,最多只能为100分
有好的解决方法可以另外开贴给分!!!大家一定要帮帮小弟啊,谢谢大家的帮忙!!!

解决方案 »

  1.   

    使用TCP效率低,但是不用处理丢包
    使用UDP效率高,丢包现象不知道应该怎么解决请大家给分析一下,使用什么好些?
      

  2.   

    http://www.codeproject.com/internet/winsockiocp.asp
      

  3.   

    这个可是需要些功底的,多线程加完成端口加网络通讯。
    呵呵,祝你好运。
    肯定是TCP的C/S结构,肯定是用多线程,线程池,完成端口,重叠模型。
    其他的再考虑吧。
      

  4.   

    谢谢大家的发言,非常感谢!!!
    但要求必须用CS的结构,因为要求响应速度很快,突发量很大,局域网内通信
    BS能满足要求吗?(我不知道能不能)要用多线程和线程池是肯定的,大家给些资料啊
    我想用UDP(因为每次通信的数据量在0.1K byte以内),但是丢包现象使我头大我顶!!!
      

  5.   

    使用B/S结构对于局域网内和网外是一样的,人家专业的B/S架构就已经做好了线程池技术,也经过了专门的优化,你还怕什么呢?不过B/S采用的是TCP,除非你用UDP而不用TCP,不然我觉得用B/S结构是最好的!
    而且你用UDP还要处理丢包的情况,你如果是重要数据,是不推荐用基于UDP传输的。当然,如果你仅是图像、视频、音频数据还可以。
      

  6.   

    B/S结构?
    浏 器/客户模式?
    C/S好像才是楼主要的模式吧??
      

  7.   

    UDP中加入一些检验来减小丢包
      

  8.   

    哦,谢谢指点
    那我想应该就是C/S结构的完成端口+UDP+多线程+线程池了现在完成端口中的IO复用不是很明白
    在异步模式中,如果有用户通信,正在数据交换,那么这个时间内其它的客户端应该是不能连接的
    那么在完成端口模型中,这个时间内,其它的socket可以进行连接,进行数据传输吗?
    我指的是在UDP中传输一个IP包的时间段内(从开始传输到传输完成)
      

  9.   

    100 byte字节的通信量,数据流量小,而且是在局域网通信,所以我个人
    认为TCP,UDP都行;
    TCP: 采用IOCP模型(实际原理也是开线程池处理I/O);
    UDP:  可以采用链表,或者IOCP;
    结构 C/S模式,在发送数据(一般不会出错)时候发出待发送数据的大小,接收的时候,
    先收到待接收数据的大小,然后循环接收!
      

  10.   

    如果传输的数据要求可靠性比较高用TCP,对一般的语音、图形数据用什么都无所谓。其实UDP在局域网传输小数据量是可以的。尤其支持广播。