BufferedReader不读取数据,但在调试模式下显示值

时间:2016-09-06 15:28:41

标签: android sockets libgdx serversocket

我已经使用libGdx为多人游戏实现了Socket。

客户端

 private void startClient(String ip, int port) {
        SocketHints socketHints = new SocketHints();
        // Socket will time our in 4 seconds
        socketHints.connectTimeout = 4000;
        //create the socket and connect to the server entered in the text box ( x.x.x.x format ) on port 9021
        Socket socket = Gdx.net.newClientSocket(Net.Protocol.TCP, ip, port, 
socketHints);
        try {
            System.out.println("JoinScreen.startClient");
            // write our entered message to the stream
            OutputStream out = socket.getOutputStream();
            out.write("testtest shine \n".getBytes());
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

服务器代码

  private void startThreadServer() {
        new Thread(new Runnable() {

            @Override
            public void run() {
                System.out.println("HotspotHomeScreen.run");
                ServerSocketHints serverSocketHint = new ServerSocketHints();

                serverSocketHint.acceptTimeout = 0;


                ServerSocket serverSocket = Gdx.net.newServerSocket(Net.Protocol.TCP, mPort, serverSocketHint);
                String messageStr = null;

                while (true) {
                    // Create a socket
                    Socket socket = serverSocket.accept(null);
                    System.out.println("while true");
                    int value = 0;
                    BufferedReader buffer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    try {
                        while ((value = buffer.read()) != -1) {
                            char c = (char) value;
                            if (value != 0 && value != 155)
                                messageStr = messageStr + c;
                            // Read to the next newline (\n) and display that text on labelMessage
                            System.out.println("HotspotHomeScreen.run  " + buffer.readLine());
                            System.out.println("test messageStr = " + messageStr);
                        }

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    System.out.println("testnjnihg test" + messageStr);
                    System.out.println("HostScreen last line");
                }
            }
        }).start(); // And, start the thread running
    }

在一台设备上启动服务器后调用BufferedReader,但无法读取数据。当我切换到调试模式时,在到达while ((value = buffer.read()) != -1) {后,缓冲区显示我在调试器控制台中发送的所有数据,但执行在那里停止。抱歉我的语言不好

0 个答案:

没有答案