无法从循环中的客户端套接字接收

时间:2016-09-15 10:36:03

标签: java

我正在尝试在客户端和服务器之间进行简单的测验。服务器发送一系列问题并等待客户的回复。问题是客户端不从服务器显示数组也不能接受任何输入。服务器已经明确连接到客户端,但客户端保持空闲状态。

服务器:

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);
}

2 个答案:

答案 0 :(得分:0)

PrintWriter#println默认情况下不会将文本刷新到客户端,因此每次要确保发送时都需要手动调用pw.flush()

要让println自动将文字刷新到客户端,请使用autoFlush参数设置为true的{​​{1}}构造函数,例如

PrintWriter pw = new PrintWriter(o, true);

由于PrintWriter(OutputStream out)构造函数在内部调用this(out, false);,因此自动闪存被禁用printlnprintfformat方法。

答案 1 :(得分:0)

PrintWriter默认情况下不会刷新信息。 您应该在pw.flush()之后添加pw.println(ans)或以这种方式创建您的作者:PrintWriter pw = new PrintWriter(o, true);