gpt4 book ai didi

java - 如何在java中读取多种格式的tcp套接字通信中的输入流

转载 作者:行者123 更新时间:2023-12-01 16:12:01 24 4
gpt4 key购买 nike

在基于 TCP 的通信中,我需要在 DataInputStream 上监听/读取多种格式。如write和writeUTF。

I need to identify the mode used by other end to switch to that mode such as when writeUTF(String) is used I need to use readUTF(), and if the write(byte[]) is used then I should be able to switch to read() to get data.

I tried to use the markSupported,mark, reset but could not implement it. I intend to sniff first few bytes to understand the format and then handover to the necessary format.

Please also specify if I could use any other input/output stream for tcp communication.

I have basic understanding of network communication. Hence any help to resolve this issue would be highly appreciated. Thank you for the help.

最佳答案

我不太确定您在这里真正想要实现什么目标。您无法确定远程端正在使用什么方法,因为一切都会解析为发送字节流。

所以最后你将收到一个字节流,然后你必须确定它代表什么。您想要识别的格式集是什么?你能列举这些吗?您可以控制远程端如何发送它们吗?如果是这样,我将实现某种形式的 header ,例如,第一个字节标识类型(例如字符串、数字数组等),然后您的客户端可以适本地切换模式。

如果您可以使用Java对象序列化和适当的对象流,那么您可以解析Java对象,然后使用instanceof,例如

ObjectInputStream ois = new ObjectInputStream(is);
Object obj = ois.readObject();

if (obj instanceof String) {
// do string-related stuff
}

等等。这假设您可以更改远程端(但不确定!)

关于java - 如何在java中读取多种格式的tcp套接字通信中的输入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/776729/

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