在从服务器接收数据时,在关闭套接字后显示/接收数据。服务器发送后如何立即接收。

问题描述 投票:0回答:2

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

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
2个回答
0
投票

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

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


0
投票

这节省了我的一天...将行重命名为一个字符(行+ =(char)in.read())

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

                }

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.