我用的是Socket通信,接收发送数据都可以的,(当然是在有数据的情况下)但是read()方法如果碰到没有数据返回的情况,将会一直等待。等待。。等待。
这怎么办呢,我尝试过用定时器。不过这个也是一直等待。。有数据返回了之后才会继续执行
请教各位高手,实在百度谷歌不到了。总不能一直等待等待吧

解决方案 »

  1.   

    如果没有接收到消息它会一直等待,socket通信是不能将读取消息和主程序放在同一个线程中,需要单独将读取消息放在一个独立的线程中,收到消息后的相关操作也要放在该线程中调用。
      

  2.   

    read设计的就是阻塞的,不管怎么调用到这行就阻塞了,你想不阻塞的就使用java NIO socket这个是非阻塞的。
      

  3.   

    将Socket放到一个单独的线程中,然后在这个线程中加上监听器模式,程序想要在收到数据的时候执行代码就添加监听器,一旦收到数据就调用这些监听器
      

  4.   

    NIO..不过说道底层的话,其实是你自己的逻辑有问题,没搞清楚socket通信读取和接收数据的流程、
      

  5.   

    如果你想一定时间内读不到东西 就考虑干点别的话,可以加个读超时。
    java.net.Socket
    void setSoTimeout(int timeout)