0

为什么这里的代码在从字段中获取消息后使用类flush()的方法......?PrintWritermessageBox

public void connectToSocket() {

    try {
        Socket socket = new Socket("localhost", 80);
        PrintWriter writer = new PrintWriter(socket.getOutputStream);
        System.out.println("Connected Successfully");
    }
    catch(IOException ex) {    
        ex.printStackTrace();
    }
}

public class sendMessageListener implements ActionListener {    
    try {    
         writer.println(messageBox.getText());
         writer.flush();
    }
    catch(IOException ex) {    
         ex.printStackTrace();
    }
}
4

1 回答 1

1

PrintWriter 的默认构造函数不会自动刷新其内容。这意味着它使用内部缓冲区,因为写入操作很昂贵。

如果要立即将缓冲区写入流,只需调用 flush 方法。

如果您使用构造函数进行自动刷新

PrintWriter writer = new PrintWriter(socket.getOutputStream,true);

您不需要调用 flush 方法,因为它会在调用新行命令(在本例中为 println())后立即刷新内部缓冲区。

于 2013-05-18T22:19:09.290 回答