Java 服务器上的Android套接字已停止

Java 服务器上的Android套接字已停止,java,android,swing,sockets,Java,Android,Swing,Sockets,我正在Android中编写一个TCP客户端,它将数据发送到Java服务器。现在,我正在添加服务器不可用时的验证,并且当服务器突然被杀死时,我无法确定该怎么做(实际上,我正在使用JFrame.EXIT\u on\u CLOSE退出服务器,因为它是一个测试服务器) 问题是,当我关闭服务器时,每当我写入OutputStream或从InputStream读取时,客户端不会抛出任何异常 // This is inside a try block, catching IOException, and fin

我正在Android中编写一个TCP客户端,它将数据发送到Java服务器。现在,我正在添加服务器不可用时的验证,并且当服务器突然被杀死时,我无法确定该怎么做(实际上,我正在使用
JFrame.EXIT\u on\u CLOSE
退出服务器,因为它是一个测试服务器)

问题是,当我关闭服务器时,每当我写入
OutputStream
或从
InputStream
读取时,客户端不会抛出任何异常

// This is inside a try block, catching IOException, and finally block closes all streams
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (mRun) {
    String response = in.readLine();
    Message message = Message.obtain();

    if (response != null && message != null) {
        message.obj = response;
        mHandler.sendMessage(message);
    }
}
此外,当我关闭服务器时,系统每秒会记录以下日志中的10-20条,甚至更多:

dalvikvm﹕ GC_FOR_ALLOC freed 499K, 6% free 9377K/9920K, paused 13ms, total 13ms
另外我还有另一个线程试图使用
PrintWriter
写入
Sockets
OutputStream

if(out != null && !out.checkError()) {
        Log.d(TAG, "Writing to output stream...");
        //...
它似乎一直在执行,这意味着
checkError()
返回false


我是新来的
Socket
编程人员,所以请解释一下我为什么要按照您的要求去做会很好,提前谢谢。

我通过更改以下行解决了这个问题

while (mRun) {


你读过:?但是你能检测到它已经关闭了吗?
while (response = in.readLine() && socket.isConnected()) {