突然有感!想问问各位一个问题,关于多线程和网络的!具体是这样的我正想做一个服务器,然后只有2个客户端来连接,就像手机似的!总感觉多线程是多余的!但小弟我实在不知道怎么去掉多线程,说说我的实现:server启动,然后监听1234 port----而且是TCP(因为需要实时)clien1这时候连接了server,发送过来数据,server缓存到一个string中。
过了不久clien2也连接了,现在服务器需要把string中缓存的数据发送给clien2,然后不断的这样发送。如果string没有缓存消息,就是两个client都没说话,server就不动
一有缓存消息就对发,就这么简单!大家看,我这样子的server需要用到多线程吗,就是一个往string中写,一个从string里面拿走数据的!有啥网络模型的适合我吗!跪求各位大大让我今晚睡个好觉啊!我已经快自杀了!哎!泪奔中!

解决方案 »

  1.   


    看来client部分是免不了了,但是关于string的这两个多线程?可以省吗?
      

  2.   

    服务端可以考虑用 异步socket,其实客户端也可以用异步socket。
      

  3.   

    网络编程都至少要一个工作线程,除非你的主线程没事做,且可阻塞。
    windows的一些模型,比如事件模型,我估计后台也要开个工作线程,只是不用你去开而已。
      

  4.   

    你这个直接用Csocket嘛,多线程交个后台去开吧~
      

  5.   

    这么简单的不需要开线程,用select或异步select实现就行了,这里有一些服务器程序,你看看吧:
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  6.   


    如果是控制台就用主线程来监听客户端的连接也是可以的,select模型既可以感知连接,又可以感知有数据可收。这样就单线程了。 
      

  7.   

    随便用一个select模型就行了,或者是用WSAAsyncSelect 
      

  8.   

    完全可以单线程啊。服务器收到客户端A的消息,然后查看客户端B在不在线,在线就直接转发过去。不在线就把数据保存到消息容器里面,等客户端B上线了,然后一次从容器里面取数据转发。
      

  9.   

    main线程 足矣。网络编程当初也让我失眠。难安。后来神功大成。没什么好怕的了。
      

  10.   

    服务器和客户端都没有必要使用多线程,如果客户端只用来发送数据,不干其他的,使用异步就行了。你的服务器只是相当于一个中转站,有数据到来就转发,用异步或者select模型都行!