我用
while(true){
     String str = cs.getMessage();
}这种方式会造成战用cpu太高但如果不用while的话就只能接一次,怎么办呢?

解决方案 »

  1.   


    BufferedReader fromServer = new BufferedReader(new InputStreamReader(cs.getInputStream()));
    你的cs是Socket吧!
      

  2.   

    是啊我现在用的就是这种方式,但问题是我的server不见得啥时候就会发数据过来象你这样得到了fromServer 的stream处理完成之后,下次啥时候处理?难道是socket自动在每次收到数据后都会自动调用对fromServer 的处理方法?
      

  3.   

    对于socket来说,客户端只需要一直read()就可以啊,因为如果socke中没有数据的话,客户端就一直处于阻塞状态。一旦有了数据,客户端又自动实时的读取,所以就能够达到LZ的要求啊
      

  4.   

    client用read时,影响不影响同时使用这个socket发数据给server?
      

  5.   

    现在我遇到的新问题: 我在client和server端分别通过socket的inputStream和outputStream互发数据。 server端使用了一个TimerTask控制定时发送数据,在run中使用outputstream向client发送数据。 client端也同样使用一个TimerTask定时向server发链路维护消息,也是使用outputstream向server发数据。 但在运行时,总是server不断地发,而client只发出了第一条就停住了。client定时发的消息也没有发出去 
    这是怎么回事啊?
      

  6.   

    我没有使用线程啊,就是一个socket
      

  7.   

    加跳出标记,
    bStop = true;
    while(bStop){
    ...........
    bStop = false;
    }