String inmsg;
while (true) {
try {
inmsg = in.readLine();
System.out.println("inmsg sent by server!:" + inmsg); } catch (Exception ee) { }
}
其中的in是从socket的getInputStream()取得的输入流。
想问的是,在永真的while循环里,是不是只有当inmsg = in.readLine();成功的从in里读取了一行文本,程序才继续往下走?
如果不是,循环体执行的太频繁,浪费资源。
那么,具体的情况是如何的?

解决方案 »

  1.   

    当然是自动阻塞的! 想不阻塞用nio,这个肯定阻塞!
      

  2.   

    但是
    inmsg = in.readLine();// receive the msg from server
    System.out.println("Msg from server!:" + inmsg);
    if (inmsg.startsWith("newuser")) {//报错!
    String[] userInfo = inmsg.split("&");
    System.out.println(userInfo[1] + "  " + userInfo[2]
                   + "  ");
    }
    这个总是报unknow source,System.out.println("Msg from server!:" + inmsg);也打出了
    Msg from server!: null
    这是怎么搞得呢?
    我肯定没有用那个啥nio.
    谢谢。
      

  3.   

    nio不是在Linux才能用嗎?
    在Java中怎么使用?
      

  4.   

    inmsg = in.readLine();// receive the msg from server
    OMG,根本就不阻塞了,为什么!!!
      

  5.   

    in.readLine();前面的程序是否已经读取过一次了,如果只有一行,又读取过一次了, in.readLine();就会取不到值的
      

  6.   

    in.readLine();前面的程序是否已经读取过一次了?回答是没有。
    umbrella1984(雨伞(KEN)) ,socket阻塞?这个怎么看啊?
    能否详细点,谢谢!
      

  7.   

    in.readLine()的时候在等待,要有东西可读,再能读下去,另外,如果用了缓存的流,缓存不够,也会等待,读不下去.
      

  8.   

    发现socket连接没有成功,汗啊
      

  9.   

    错了,连接成功了,但是现在怀疑是线程的问题。
    问题描述:
    public class MainWindow extends JFrame implements Runnable{...}
    MainWindow 是主窗口,本身是Runnable的。它上面添加了个Panel----titlePane ,也是Runnable的。
    public class titlePane extends JPanel implements Runnable{...}
    请问这样会不会有问题?
    如果有,要怎样才是安全的?
    多谢!
      

  10.   

    问题解决了。
    原因是:
    阿拉不小心在服务器端把这个socket连接的输出流给关闭了,结果客户端对应的输入流就傻了,一个劲的readLine(),读到的都是null,呵呵。
    谢谢各位,散分咯!