【问题标题】:Android socket on server stopped服务器上的 Android 套接字已停止
【发布时间】:2014-06-05 20:21:13
【问题描述】:

我正在 Android 中编写一个 TCP 客户端,它将数据发送到 Java 服务器。我现在正在为服务器不可用时添加验证,并且当服务器突然被杀死时我陷入了困境(我实际上是使用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

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

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

而且它似乎一直在执行,这意味着 checkError() 正在返回 false

我是 Socket 编程的新手,所以解释一下我为什么要按照你告诉我的去做会很好,在此先感谢。

【问题讨论】:

标签: java android swing sockets


【解决方案1】:

我通过更改以下行解决了它

while (mRun) {

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

【讨论】:

    猜你喜欢
    • 2013-09-25
    • 2011-11-19
    • 2018-02-17
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多