Java SocketException,连接由对等方重置。心跳服务器时的奇怪行为
在客户端服务器android应用程序上工作。客户端正在轮询Java SocketException,连接由对等方重置。心跳服务器时的奇怪行为,java,android,socketexception,heartbeat,Java,Android,Socketexception,Heartbeat,在客户端服务器android应用程序上工作。客户端正在轮询bufferedinputstream(in)以获取服务器消息,同时还重复检查服务器是否可访问,以便在服务器脱机时立即终止 try { while (true) { if (MainActivity.in.available() > 0) { message = MainActivity.readInput(); break; } Thread.sleep(100); } }
bufferedinputstream(in)
以获取服务器消息,同时还重复检查服务器是否可访问,以便在服务器脱机时立即终止
try {
while (true) {
if (MainActivity.in.available() > 0) {
message = MainActivity.readInput();
break;
}
Thread.sleep(100);
}
} catch (IOException e) {Log.e("myoutput", e.toString()); serverOffline = true; } //server probably offline?
catch (InterruptedException e2) {}
在我的一台测试设备(安卓2.2)上,这就像我想的那样,只要我关闭服务器,IOException
就会被触发。尽管在我的第二台测试设备(安卓4.3)上,IOException
没有被触发(符合API 8)。但我开始认为这不是一个设备问题,因为我尝试在模拟器中运行API8和API18,但它没有触发
有什么想法吗
我可能没有提供所有必要的信息来获得任何帮助,请让我知道,如果是这样,我会提供 如果远程服务器关闭,in.available可能会得到-1,那么代码将进入无限循环。您可以尝试将in.available值打印到日志。我检查了in.available是否得到-1,否