我已经设置了服务器和客户端,这基本上是一个基本的文本电子邮件系统。我目前正在使用PrintWriter在服务器和客户端之间发送文本。我正在尝试创建一个基于附件的系统,为此,我正在使用ObjectOutputStream。

private static PrintWriter output;
private static ObjectOutputStream outStream;

public ClientHandler(Socket socket) throws IOException
{
    client = socket;
    outStream = new ObjectOutputStream(client.getOutputStream());
    input = new Scanner(client.getInputStream());
    output = new PrintWriter(client.getOutputStream(), true);
}

我目前遇到的问题是,如果我尝试通过输出的Printwriter发送文本,由于某种原因,多余的字符会被添加到发送的文本的开头,这意味着程序无法识别通过Printwriter传递给客户端的关键字。如果我注释掉outStream对象的创建,问题将停止。

谁能给我任何建议以尝试解决这个冲突问题?

最佳答案

这些多余的文本来自对象输出流。

将ObjectOutputStream和PrintStream附加到相同的输出流基本上永远不会起作用。您必须想出使用1个或另一个的解决方案。要仅使用PrintStream,您可以考虑将您的对象转换为JSON或XML。另一方面,您可以只使用ObjectOutputStream并将字符串写入ObjectOutputStream

关于java - ObjectOutputStream和PrintWriter冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10113460/

10-11 04:41