繁体   English   中英

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

[英]Android socket on server stopped

我正在用Android编写一个TCP客户端 ,该客户端将数据发送到Java服务器。 现在我添加验证了当服务器不可用,我就死在当服务器被杀害突然(实际上,我exitting与服务器做什么JFrame.EXIT_ON_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

有尝试写入到另一个线程SocketsOutputStream使用PrintWriter

if(out != null && !out.checkError()) {
        Log.d(TAG, "Writing to output stream...");
        //...

而且它似乎继续执行,这意味着checkError()返回false

我是Socket编程的新手,所以对我为什么要做你告诉我做的事情的解释会很好,在此先感谢。

我通过更改以下行解决了

while (mRun) {

while (response = in.readLine() && socket.isConnected()) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM