【发布时间】:2013-10-18 17:45:57
【问题描述】:
我通过套接字从 android 应用程序向 java 程序发送消息。此消息由打印机发送。
这是我如何将消息从 android 发送到 java 程序:
out.println("Hello there");
out.flush();
这是我收到消息的方式:
while(true){
String msg = in.readLine();
System.out.println("MSG: " + msg);
...some if-statements...
}
System.out.println 的输出是: 味精:你好 *味精:空*
我怎么会在那里得到 null ?我只是发送“你好”..
我们将不胜感激,谢谢!
编辑: java 程序的实际代码。
while (run) {
String msg = in.readLine();
String[] parts;
String username;
String password = null;
System.out.println("MSG: " + msg);
parts = msg.split("\\*");
username = parts[0];
password = parts[1];
boolean validUser = false;
validUser = db.authenticate(username, password);
if (validUser) {
db.updateIP(username, socket.getInetAddress().getHostAddress());
out.println("done");
out.flush();
} else {
out.println("loginfail");
out.flush();
closeSocketConnection();
}
}
}
private void closeSocketConnection() throws IOException {
in.close();
out.close();
socket.close();
run = false;
}
【问题讨论】:
-
如果输入字符串是
"Hello world",我希望password = parts[1];会抛出IndexOutOfBoundsException。 -
run定义在哪里。包含while循环的整个函数是什么? -
好的,我知道我很抱歉我不是很清楚。 “Hello world”只是我第一个伪代码中的一个例子。现在我发送“user*123”并得到 MSG:user*123 MSG:null。 while-loop 被放置在一个 Handler(它扩展了线程)中,而 run 变量被定义在 while-loop 之外但在 Handler 类中。
-
就 SO 提出问题时,您必须清楚。伪代码和不相关的示例输入不起作用,尤其是当它不能代表您遇到问题的情况时。
标签: java android sockets inputstream outputstream