我正在从服务器向客户端发送数据,但客户端仅在断开连接时才收到数据。但是一旦服务器发送我就需要它。我不知道为什么它会在套接字连接关闭后发送数据。
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();
}
检查服务器是否在每条消息的末尾发送EOL字符,以便BufferedReader可以正确使用readline()方法。
或者,您也可以尝试在每条消息之后强制执行flush()。
这节省了我的一天...将行重命名为一个字符(行+ =(char)in.read())
String line = " ";
while ((line += (char)in.read()) != null) {
Log.i( "read line", line );
eReceiveData.setText( line );
}
谢谢。