使用java套接字readUTF时丢失的消息

时间:2016-03-19 21:38:22

标签: java sockets

我整天都在处理一个问题,我用很多不同的方式搜索了它,但我找不到解决方案,所以我的客人是时候问:

我试图编写两个应用程序代码:客户端和使用套接字的java服务器以及除了一件事之外的所有东西都可以正常工作:客户端不会收到所有消息但只接收对应的消息。

我正在做的是循环2D数组以发送每个" x"定时从服务器到客户端的消息,但是例如,如果循环发送8条消息,则客户端仅接收消息2,4,6和8。

我在服务器端控制台上打印输出,只是为了确认数组已填充属性,服务器显示所有消息但不显示客户端。

我正在使用这个:

    for (int i = 0; i < info.length; i++) {
        if (info[i] != null && info[1].getState() == NetworkInfo.State.CONNECTED) {
            Toast.makeText(getApplication(),"connected",Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplication(),"not connected :(",Toast.LENGTH_SHORT).show();
        }
    }

1 个答案:

答案 0 :(得分:1)

问题在于您阅读input以便与"finish"进行比较,然后您阅读了一个您从未比较过的全新字符串。

相反,您应该在条件的input分支中打印else,即

while (true) {
    String input = in.readUTF();
    if (input.equals("finish")) {
        System.out.println("Server has closed the connection\nGoodBye!");
        System.exit(0);
    } else {
        System.out.println("Server says " + input);
        //                                  ^^^^^
    }
}