最近一个项目需要一个接收服务器,具体而言,就是有很多远程设备会通过网络持续的发送自己的运行状态,在服务器上需要一个软件不断的接收这些数据,然后把他们写进数据库。以前这方面接触不过,所以在网上查了些资料,发现数据接收部分好像主要是3种方法:
 - 异步socket;
 - 多线程+同步socket;
 - 再一个是用线程池。
看了很多帖子但还是有点晕,到底应该用哪种方式好?  这些方法各自的优势和劣势是什么? 万望各位前辈不吝赐教~~多谢!

解决方案 »

  1.   

    - 多线程+同步socket
    这个可以的
    socket 作为线程去接收数据
    每次接收数据时 再新建一个线程去处理数据(尽量不要用全局变量,或者用临界点)
      

  2.   

    异步socket,如果你的客户端数量较多的话,建议用这个,.NET的异步socket本身封装了IOCP,性能上肯定不是问题
      

  3.   

    如果是服务端,建议用异步socket
      

  4.   

    UDP单播同步接收-〉数据缓冲区-〉数据处理线程实现简单。速度快。系统管理线程的开销少。
      

  5.   

    客户端是TCP的~~ 这个已经定好了~~ 
      

  6.   

    异步socket吧 不过就是回调方法写的有点晕而已
      

  7.   

    TCP异步接收-〉数据缓冲区-〉数据处理线程