【发布时间】:2012-10-21 16:30:06
【问题描述】:
我正在构建一个应用程序,其中我有一个服务器和一个客户端,它们可以相互通信 -通过 telnet。 (通过插座)。服务器程序正在监视一罐气体,并通过套接字将温度水平和压力水平发送到接受的客户端。
当我在 telnet 中写东西时,我已经设法让客户端和服务器相互通信,但是...... 我需要一些帮助来处理我发送的数据。
我已经制作了一个登录脚本来确定用户是否是有效用户。 所以我可以写两个词,如“myname”“space”“mypassword”,我得到一个绿灯并返回一个有效的用户。 但是当我只写一个词并按回车时,它给了我: 线程中的异常... java.lang.Array.IndexOutOfBoundsExeption 当我写退出或注销时出现异常!
(所有用户都在脚本中进行了硬编码,以便于测试。(登录脚本本身可以正常工作,当我写错时返回有效用户=假。) 这是我的代码。添加了一些伪代码,因为我不是 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..
感谢您的帮助和/或提示! :)
【问题讨论】:
-
"它给了我:线程中的 Exeption... java.lang.Array.IndexOutOfBoundsExeption " => 异常消息还应该有一个对应于行的行号问题出现了。
-
是的……我知道。对不起。它在这里给我一个错误:user.isValid(dataInArray[0], dataInArray[1]);
-
System.out.println(telNetCommand);失败时打印什么? -
它只返回我输入的内容。当我写“Demouser”“demopassword”时它返回“Demouser”“demopassword”......如果我写“SKIP_N”(或任何其他单字..)它失败了。如果我写“注销”或“退出”它会正常终止。
-
这与 Telnet 无关,除非您使用端口 23 或某处有 RFC 754 的一些实现。