设计一个C/S架构的系统,Client和Server之间如何进行数据的通信处理为好?系统工作模式如下:
1、SERVER负责原始数据的捕获
2、CLIENT连接SERVER进行数据采集
3、CLIENT对从SERVER采集的数据进行分析处理
4、一个SERVER支持多个CLIENT用户

解决方案 »

  1.   

    如果不是超大规模的, 建议用IOCP吧, 如果很超大, 那要使用分布式处理, 另外, 还要考虑冗余
      

  2.   


    IOCP的确是一个不错的模型!我现在考虑的主要几个方面的问题没有弄清楚:
    1、SERVER的工作模式
    2、SERVER对CLIENT连接的管理、并发用户的支持能力设计
    3、SERVER对CLIENT数据传输的方式
    4、客户端连接SERVER的请求方式还请各位DX指教。
      

  3.   

    tcp就可以了,tcp通讯的程序网上就太多了
    自己的通讯协议设计好,就是收发包,解析包的问题了
      

  4.   


    IOCP也是使用了TCP协议通信.
    不知道您说的TCP是指何种方式使用?如何很好的处理并发用户的连接,以及数据请求呢?
      

  5.   


    多谢指教。的确如此,工程要求是一个比较专业级别的应用,我确实没有很好的实战经验,尤其对于系统架构、软件模式、实现方面缺乏经验。身边确实没有能够胜任的同事,这不最近一直在疯狂的学习研究,期待坛子里的各位朋友指点了。感觉现在的大多程序员也都是对代码比较熟悉,在系统架构、甚至再小级别的应用架构设计方面欠缺不是一点两点啊。我不是科班出身programmer,但现在不得不上阵了。大家看来都要加油啊!期待各位高人不吝赐教!
      

  6.   

    套接字+select模型  服务器在指定端口收客户端请求 处理完后返回给客户端  如果很多 可用队列
      

  7.   

    处理过类似的项目,是WINCE 的无线终端与 SERVER 通信,
    做法:
    1。建立多线程的 socket server , 可以支持多个终端同时连接。
    2。采用类似 IE 有方式 进行对话,也就是有请求时才有回应,请求结束,同时断开连接。
    3。在Socket server中解释 TCP/IP传送的字符串,由Socket server与Sql Server或者 oracle连接处理数据。
    4。将处理的结果返回到 终端.
      

  8.   


    谢谢!请问你有否使用IOCP完成端口呢?还是自己开启的多线程?每个连接一个线程么,如果几十个并发用户,岂不是要开启几十个线程了?!
      

  9.   

    WSAAsyncSelec和IOCP都可以,这2种方法都避免了程序开过多线程弊端,
    WSAAsyncSelec 代码容易一些,维护简单,效率比IOCP差一些
    IOCP效率最佳,稍难一些,自己选择吧,数据传输量不大(没有图片),几十个并发的话,用WSAAsyncSelec也不会差太多
      

  10.   

    数据量传输确实很大!大概100+Mbps流量。很是担心性能支撑不住
      

  11.   

    100Mbps=12.5MB/s 
    好像没的选了,
    服务端IOCP吧,
    客户端其它工作压力不大的话,用WSAAsyncSelec
      

  12.   

    IOCP模型是不是对于并发客户端很多的时候才体现出来优势,如果我的客户端并发数量并不是很多,但是对于传输效率要求很高呢?那种模型对于一个项目的开发,从项目管理和后续维护角度而言比较好。我想这么多模型,肯定有一个取舍的问题。如何掌握?不要告诉我选择哪一个都行啊。