gpt4 book ai didi

java - 我可以在不关闭和重新打开 Java 套接字的情况下更改我正在使用的流类型吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:59 26 4
gpt4 key购买 nike

我正在用 Java 进行一些套接字编程,我希望能够在使用 ObjectOutputStreamDataOutputStreamPrintWriter 之间切换 都在同一个套接字/连接中。这可能吗?最好的方法是什么?

我试过只创建两种类型的对象,例如 ObjectOutputStreamDataOutputStream,但这似乎不起作用。

我想在它们之间切换的原因是,例如,发送一个文本命令 "INFO",表示我即将发送一个带有信息的对象或一个命令 "DATA” 表示我即​​将发送数据。任何有关执行此操作的最佳方法的建议都将不胜感激。

最佳答案

您只能使用一种底层流类型,但您可以从任何地方获取该数据。

DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));


public static void writeObject(DataOutputStream dos, Serializable obj) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.close();
dos.writeUTF("OBJECT");
byte[] bytes = baos.toByteArray();
dos.writeInt(bytes.length);
dos.write(bytes);
dos.flush();
}

public static void writeBytes(DataOutputStream dos, byte[] bytes) {
dos.writeUTF("BYTES");
dos.writeInt(bytes.length);
dos.write(bytes);
dos.flush();
}

public static void writeText(DataOutputStream dos, String text) {
dos.writeUTF("TEXT");
dos.writeUTF(text);
dos.flush();
}

关于java - 我可以在不关闭和重新打开 Java 套接字的情况下更改我正在使用的流类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6894127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com