我正在尝试在客户端和服务器之间进行简单的测验。服务器发送一系列问题并等待客户的回复。问题是客户端不从服务器显示数组也不能接受任何输入。服务器已经明确连接到客户端,但客户端保持空闲状态。
服务器:
OutputStream o =sock.getOutputStream();
PrintWriter pw = new PrintWriter(o);
InputStream is = sock.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
int i=0;
while(i<10)
{
pw.println(array[i]);
String st = br.readLine();
System.out.println(st);
i++;
}
客户端:
InputStream istream = sock.getInputStream();
BufferedReader content = new BufferedReader(new InputStreamReader(istream));
String str;
OutputStream ostream=sock.getOutputStream();
PrintWriter pw = new PrintWriter(ostream)
String ans;
for(int j=0;j<10;j++)
{
str=content.readLine();
System.out.println(str);
ans=sc.nextLine();
pw.println(ans);
}
答案 0 :(得分:0)
PrintWriter#println
默认情况下不会将文本刷新到客户端,因此每次要确保发送时都需要手动调用pw.flush()
。
要让println
自动将文字刷新到客户端,请使用autoFlush
参数设置为true
的{{1}}构造函数,例如
PrintWriter pw = new PrintWriter(o, true);
由于PrintWriter(OutputStream out)
构造函数在内部调用this(out, false);
,因此自动闪存被禁用println
,printf
或format
方法。
答案 1 :(得分:0)
PrintWriter默认情况下不会刷新信息。
您应该在pw.flush()
之后添加pw.println(ans)
或以这种方式创建您的作者:PrintWriter pw = new PrintWriter(o, true);