【问题标题】:On receiving a data from the server it is displayed/received after closing the socket. How to receive it immediately once the server sends.?在从服务器接收数据时,它会在关闭套接字后显示/接收。服务器发送后如何立即接收。?
【发布时间】:2019-04-01 10:13:53
【问题描述】:

我正在从服务器向客户端发送数据,但客户端仅在断开连接时才收到它。但是一旦服务器发送我就需要它。我不知道为什么套接字连接关闭后它会延迟发送数据。

public void run() {
                try {
                    socket = new Socket(eHostIp.getText().toString(), Integer.parseInt( eHostPort.getText().toString() ) );


                    BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream() ), 1024 );
                    eReceiveData.setText( "Server Connected... XXXXXXX" );
                    String line;
                    while ((line = in.readLine()) != null) {
                        Log.d("read line",line);
                        eReceiveData.setText( line );
                        socket.setSoTimeout( 1000 );
                       //socket.close();
                    }

                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } );
        thread.start();
    }

【问题讨论】:

标签: java android serversocket


【解决方案1】:

检查您的服务器是否在每条消息的末尾发送了一个 EOL 字符,以便您的 BufferedReader 可以正确使用 readline() 方法。

或者,您也可以尝试在每条消息之后强制 flush()。

【讨论】:

    【解决方案2】:

    这节省了我的时间...以字符形式读取该行 (line += (char)in.read())

                    String line = " ";
                    while ((line += (char)in.read()) != null) {
                        Log.i( "read line", line );
                        eReceiveData.setText( line );
    
                    }
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 2023-03-23
      • 2020-09-17
      • 1970-01-01
      相关资源
      最近更新 更多