我有一个服务器将一个String发送到套接字客户端。当我尝试从客户端获取String的内容时,它不会读取它。 服务器通过以下方式发送:
output.write(res); output.flush(); // I checked res content and it is all good
此客户收到:
public class Client {
public static void main(String[] args) throws IOException{
Socket connexion = new Socket(InetAddress.getLocalHost(), 33333);
BufferedReader input = new BufferedReader(
new InputStreamReader(connexion.getInputStream(), "8859_1"), 1024);
String res="";
while(input.readLine()!=null){
res += input.readLine()+"\n";
}
System.out.println(res);
}}
建议好吗?谢谢
答案 0 :(得分:1)
问题是你正在阅读下一行,然后忽略它,然后再次尝试阅读下一行。第二次读取下一行时,没有数据,因为第一次读取已经消耗了它:
while(input.readLine()!=null){
res += input.readLine()+"\n";
}
尝试以下内容:
String line = null;
while((line = input.readLine()) != null) {
res += line + "\n";
}
正如@JB Nizet所提到的,这取决于服务器实际向客户端发送换行符以终止消息。如documentation for readLine()
中所述:
读取一行文字。一条线被认为是任何一条线终止的 换行(' \ n'),回车(' \ r')或回车 然后立即换行。