我写了一个连接到java服务器的应用程序。它向服务器发送一条小消息,如果消息“打开”,服务器将应答。对于任何其他情况,服务器不会发回数据。
我写了一行来检查输入流是否为null,但是在服务器没有应答的情况下它会得到一个nullpointer异常。它对我来说很奇怪:
if(!(line = in.readLine())。equals(null)){Remote.setValue(line); }
因此,如果“line”为null,那么它应该跳过(或者转到else部分,如果它会在哪里)我设置值的部分,但它会挂起。只需阻止整个应用程序。
我做错了什么?为什么是这样?我该如何解决?请帮忙!
答案 0 :(得分:0)
您没有检查输入流是否为空。您正在检查readLine
是否返回null。
请改为尝试:
if (in != null) {
line = in.readLine();
if (line != null) {
Remote.setValue(line);
}
}
编辑:
使用socket.setSoTimeout (x)
,其中x是某个正整数,以便in.readLine()
在输入可用之前不会阻塞。