| 请问从socket取得的InputStream的readLine()方法是不是自动阻塞的? |
| [ 来源:ITWENKU 时间:2007-4-11 9:50:09 | 浏览:366人次
] |
| |
|
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里读取了一行文本,程序才继续往下走? 如果不是,循环体执行的太频繁,浪费资源。 那么,具体的情况是如何的?
当然是自动阻塞的! 想不阻塞用nio,这个肯定阻塞!
但是 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. 谢谢。
我現在也遇到同樣問題﹐這個問題怎么解?
nio不是在Linux才能用嗎? 在Java中怎么使用?
inmsg = in.readLine();// receive the msg from server OMG,根本就不阻塞了,为什么!!!
in.readLine();前面的程序是否已经读取过一次了,如果只有一行,又读取过一次了, in.readLine();就会取不到值的
哦? 有用的提示,谢谢! 看看先!
应该看你的socket是否阻塞
in.readLine();前面的程序是否已经读取过一次了?回答是没有。 umbrella1984(雨伞(KEN)) ,socket阻塞?这个怎么看啊? 能否详细点,谢谢!
in.readLine()的时候在等待,要有东西可读,再能读下去,另外,如果用了缓存的流,缓存不够,也会等待,读不下去.
发现socket连接没有成功,汗啊。。。
错了,连接成功了,但是现在怀疑是线程的问题。 问题描述: public class MainWindow extends JFrame implements Runnable{...} MainWindow 是主窗口,本身是Runnable的。它上面添加了个Panel----titlePane ,也是Runnable的。 public class titlePane extends JPanel implements Runnable{...} 请问这样会不会有问题? 如果有,要怎样才是安全的? 多谢!
问题解决了。 原因是: 阿拉不小心在服务器端把这个socket连接的输出流给关闭了,结果客户端对应的输入流就傻了,一个劲的readLine(),读到的都是null,呵呵。 谢谢各位,散分咯!
|
|
 |
推荐文章 |
|