套接字异常:按下后退按钮后插座关闭

时间:2015-05-25 20:39:15

标签: java android sockets exception

我正在编写一个应该在后台运行的应用程序。当我按下手机上的后退按钮时,我与服务器的套接字连接已关闭并发生异常。按socket connection按钮后是否有可能不关闭back

05-25 22:32:37.990: E/Receiver(7505): Read: Error
05-25 22:32:37.990: E/Receiver(7505): java.net.SocketException: Socket closed
05-25 22:32:37.990: E/Receiver(7505):   at libcore.io.Posix.recvfromBytes(Native Method)
05-25 22:32:37.990: E/Receiver(7505):   at libcore.io.Posix.recvfrom(Posix.java:161)
05-25 22:32:37.990: E/Receiver(7505):   at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:250)
05-25 22:32:37.990: E/Receiver(7505):   at libcore.io.IoBridge.recvfrom(IoBridge.java:553)
05-25 22:32:37.990: E/Receiver(7505):   at java.net.PlainSocketImpl.read(PlainSocketImpl.java:485)
05-25 22:32:37.990: E/Receiver(7505):   at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
05-25 22:32:37.990: E/Receiver(7505):   at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
05-25 22:32:37.990: E/Receiver(7505):   at java.io.InputStream.read(InputStream.java:162)
05-25 22:32:37.990: E/Receiver(7505):   at stas.tcp.client.Receiver.run(Receiver.java:40)
05-25 22:32:37.990: E/Receiver(7505):   at java.lang.Thread.run(Thread.java:818)

我的代码在Receiver类:

  

第40行是:while((numBytes = inputStream.read(byteArr))!= -1))

public void run() {
    int numBytes = 0;

    try {
        Log.e("Receiver","");
        while((numBytes = inputStream.read(byteArr)) != -1) {
            if(!flag){
                Log.e("Receiver - thread", "break");
                break;
            }
            for(int i = 0; i < numBytes; i++) {
                pouartSupport.storeChar(byteArr[i]);
                pouartSupport.checkPacket();
            }
        }
    } catch (Exception e) {
        Log.e("Receiver", "Read: Error", e);
    }
}

0 个答案:

没有答案