首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何意外地检查用户结束连接

如何意外地检查用户结束连接
EN

Stack Overflow用户
提问于 2014-12-06 10:53:47
回答 1查看 41关注 0票数 1

我不明白为什么这不管用:

代码语言:javascript
复制
private String clientInput() {
    String temp = "";
    try {
        temp = in.readLine().trim();
        if (temp == null) {
            out.println("4");
            out.flush();
        }
    }
    catch (IOException ioe) {
        out.println("6");
        out.flush();
    }
    return temp;
}

目前,我使用的方法应该是从'client‘套接字读取输入,'in’是一个bufferedReader,'out‘是一个打印器。如果用户意外地结束了会话,我应该确保程序足够健壮来处理。因此,在等待用户输入时,我想如果他们结束了会话,那么输入将为null。(对吗?)因此,我有一个测试类,它通过以下方式发送数据:

代码语言:javascript
复制
String[] title = {"a","b","c","","e","f",null};

只是为了测试它是否会捕获它没有捕获的空value...but。

作为参考,发送值的行位于一个循环中:

代码语言:javascript
复制
out.println(title[i]);
out.flush();

我想错了吗?还是我只是做错了什么?

谢谢abarnybox

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-06 18:10:35

  1. readLine()阻塞,直到一行被完全读取或套接字关闭或超时。 如果套接字已被发送方关闭,则该方法将返回null。您不需要发送空值。 无论如何,发送空是不可能的,空是空,你不能发送任何东西,对吗? (如果试图在字符串数组中发送空值,则实际上将""+null = " null“传递给println方法。 您的客户端接收字符串“null\n”)。

  1. 把你的零检查前修剪。否则,在流结束时会得到一个NullPointerException。

私有字符串clientInput() { String = "";尝试{ temp = in.readLine();if (temp == null) { out.println("4");out.flush();}out.println{ temp = temp.trim();} catch (IOException ioe) { out.println("6");out.flush();}返回temp;}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27330862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档