1

我写了一个连接到java服务器的应用程序。它会向服务器发送一条小消息,如果消息为“开启”,则服务器会回复。对于任何其他情况,服务器不会发回数据。

我写了一行来检查输入流是否为空,但是它在服务器没有回答时得到一个空指针异常。这对我来说很奇怪:

if (!(line = in.readLine()).equals(null)) { Remote.setValue(line); }

因此,如果“line”为空,那么它应该跳过(或转到其他部分,如果它会在哪里)我设置值的部分,但它会挂起。只需阻止整个应用程序。

我做错了什么?为什么是这样?我该如何解决?请帮忙!

4

1 回答 1

0

您没有检查输入流是否为空。您正在检查是否readLine返回 null。

试试这个:

if (in != null) {
  line = in.readLine();
  if (line != null) {
      Remote.setValue(line);
  }
}

编辑 :

使用socket.setSoTimeout (x)where x 是某个正整数,以便在in.readLine()输入可用之前不会阻塞。

于 2013-04-30T13:56:40.600 回答