Android Java - 发送一个时发送两个socket消息

时间:2013-10-10 19:35:18

标签: java android sockets inputstream outputstream

我通过套接字从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的输出是: 味精:你好 * MSG: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;
    }

2 个答案:

答案 0 :(得分:0)

while循环的退出条件是什么?

我认为它正在重复,{I}会在到达流末尾时返回readLine,导致null被打印。

更新了给定的新信息:

假设MSG: null是有效的用户名/密码组合,则永远不会调用user*123,循环返回顶部,closeSocketConnection()返回readLine,您会看到错误的输出。随后null

上的NullPointerException

答案 1 :(得分:0)

你的循环应该是:

while ((line = in.readLine()) != null)
{
    // ...
}

当你正在处理指示循环内部流结束的null时,因此当它不是时将你打印为消息。