gpt4 book ai didi

java - 处理 Java Socket 中的一个或多个单词 .readLine()

转载 作者:行者123 更新时间:2023-12-02 00:10:12 24 4
gpt4 key购买 nike

我正在构建一个应用程序,其中有一个服务器和一个客户端,可以通过 telnet 相互通信。 (通过套接字)。服务器程序正在监视一些气体的储 jar ,并通过套接字将温度水平和压力水平发送到接受的客户端。

当我在 telnet 中编写内容时,我已经设法让客户端和服务器能够相互通信,但是......我需要一些帮助来处理我发送的数据

我制作了一个登录脚本来确定用户是否是有效用户。所以我可以写两个单词,如“我的名字”“空格”“我的密码”,我会得到绿灯并返回一个有效的用户。但是当我只写一个单词并按回车键时,它会给出:线程中的异常... java.lang.Array.IndexOutOfBoundsExeption 除了当我写退出或注销时!

(所有用户都在脚本中硬编码,以便于测试。(登录脚本本身工作正常,当我写错东西时返回 valid user = false。)这是我的代码。添加了一些伪代码,因为我不是 100% 确定要做什么...;)

String telNetCommand = dataIn.readLine();
System.out.println(telNetCommand);

String dataInArray[] = telNetCommand.split(" ");

user.isValid(dataInArray[0], dataInArray[1]);

if (dataInArray[1] == "\n") {
//Ignore login request and continue telnet-logging?
}

客户端应用程序对每个命令都有一个按钮,例如:

“每第n个数据发送给我一次”,或者“每第n秒给我发送一批数据。如果命令等于退出,或者注销->中断操作...

// --------------// USER INPUT FROM CLIENT APP //--------------------------//

// --------------// CONTINUE ? //----------------------------//
if (command.equals("CONTINUE")) {
continueSession();
else { //..Kill session
}
}

// --------------// SKIP <N> //----------------------------//
if (command.equals("SKIP_N")) {
skipEveryNthData();
}

// --------------// BATCH <N> //---------------------------//
if (command.equals("BATCH_N")) {
batchEveryNthData();
}

// --------------// LOGG OUT #1 //-------------------------//
if (command.equals("logout") || command.equals("exit")) {
break;
}

也许我现在有点困惑,但我认为我需要将所有数据放入数组中,然后检查

if
dataInArray[0] == "CONTINUE"
dataInArray[0] == "SKIP_N", or
dataInArray[0] == "BATCH_N"
(then send some data back)...

还有...

if dataInArray[1] == "enter" ("\n") execute the single word commands ...??
if dataInArray[0] == "LOG_IN" or "PASSWORD" check if valid user is true..

感谢您的帮助和/或提示! :)

最佳答案

在这部分代码中:

String dataInArray[] = telNetCommand.split(" ");
user.isValid(dataInArray[0], dataInArray[1]);

您假设telNetCommand 字符串包含空格。如果不存在,dataInArray 将仅包含一个元素,并且 dataInArray[1] 将抛出 IndexOutOfBoundsException

您应该检查数组的大小:

if (dataInArray.length < 2) {
//no space in the command - do what you need to do
//for example an error message
}

关于java - 处理 Java Socket 中的一个或多个单词 .readLine(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12999763/

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