gpt4 book ai didi

java - 如何检查用户意外终止连接

转载 作者:行者123 更新时间:2023-11-30 03:38:11 24 4
gpt4 key购买 nike

我不明白为什么这不起作用:

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;
}

目前我有一个方法应该从“客户端”套接字读取输入,“in”是一个 bufferedReader,“out”是一个 printwriter。我应该确保程序足够强大,可以处理用户意外结束 session 的情况。因此,当等待用户输入时,我想如果他们结束 session ,输入最终将为空。 (是对的吗?)所以我有一个测试类发送以下数据:

String[] title = {"a","b","c","","e","f",null};

只是为了测试它是否会捕获 null 值...但事实并非如此。

仅供引用,发送值的行处于循环中:

out.println(title[i]);
out.flush();

我是不是理解错了?或者我只是做错了什么?

谢谢abarnybox

最佳答案

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

  2. 在修剪之前放置空检查。否则,当流结束时,您会收到 NullPointerException。

    private String clientInput() {
    String temp = "";
    try {
    temp = in.readLine();
    if (temp == null) {
    out.println("4");
    out.flush();
    } else {
    temp = temp.trim();
    }
    }
    catch (IOException ioe) {
    out.println("6");
    out.flush();
    }
    return temp;
    }

关于java - 如何检查用户意外终止连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27330862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com