【问题标题】:Sockets,BufferedWriter.flush() not sending the data [duplicate]套接字,BufferedWriter.flush()不发送数据[重复]
【发布时间】:2014-11-06 23:53:07
【问题描述】:

以下代码有效,服务器获取 com 字符串然后连接关闭,如果我取消注释 bw.flush() 及其下一行,服务器不再获取 com 字符串,它只是等待br.readLine() 用于响应(由于服务器没有获得 com 字符串,因此不会得到响应),如果我移动 bw.close() 并将其放在 bw.flush() 位置,br.readLine() 将引发 Socket 关闭异常。

public static void setupClient(String[] args) throws UnknownHostException, IOException{
    Socket client = new Socket(InetAddress.getLocalHost().getHostName(), Server.DEFAULT_COMMAND_PORT);
    BufferedWriter  bw =new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
    BufferedReader  br =new BufferedReader(new InputStreamReader(client.getInputStream()));
    String com=args[0]+(args.length==2?args[1]:"");
    bw.write(com);
//  bw.flush();
//  System.out.println("response:"+br.readLine());
    bw.close();
    client.close();
}

【问题讨论】:

    标签: java sockets bufferedreader serversocket bufferedwriter


    【解决方案1】:

    你在读行,但不是在写行。 readLine() 在读取行终止符或流结尾时返回。这就是为什么它在对等点关闭而不是刷新时起作用的原因。你需要在write().之后使用BufferedWriter.newLine()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多