Я отправляю сообщение через сокеты из приложения android в программу java. Это сообщение отправляется с помощью принтера.Android Java - Два сокета при отправке одного
вот как я отправить мое сообщение от андроида для Java программы:
out.println("Hello there");
out.flush();
Это, как я получаю сообщение:
while(true){
String msg = in.readLine();
System.out.println("MSG: " + msg);
...some if-statements...
}
Выход System.out.println является: MSG: Привет * MSG: нулевой *
Как получилось, что я получил нуль? Я только посылаю «привет там».
Помощь была бы оценена, спасибо!
EDIT: Фактический код программы 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: пользователь * 123 MSG: null. Цикл while помещается в обработчик (который расширяет поток), а переменная run определяется вне цикла while, но внутри класса Handler. – user2099024