gpt4 book ai didi

java - JAXB 通过套接字解码问题

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

抱歉大家,我重复了一个主题。但我不明白这里的答案

https://stackoverflow.com/a/9598909/1404852“Kafka”说他使用 XMLEventWriter 修复了解码 block 。导致建议写入流字符串,然后将它们连接起来解码,不适合我。

我有这样的代码。

public class InputThread implements Runnable {
private BufferedReader in;
private String fserver; // = CharBuffer.allocate(0);
private static final Logger LOG = Logger.getLogger(InputThread.class);
private JAXBContext jaxbContext;
private Unmarshaller jaxbUnmarshaller;
private XMLProtocol protocol;

public InputThread(Socket fromserver, BufferedReader in) throws IOException, JAXBException {
jaxbContext = JAXBContext.newInstance(XMLProtocol.class);
jaxbUnmarshaller = jaxbContext.createUnmarshaller();
this.in = in;
new Thread(this);
}

public void run() {
while (true) {
try {
if (in.ready())

protocol = (XMLProtocol) jaxbUnmarshaller.unmarshal(in);


}
}
}

}

或者在服务器端我应该插入流末尾?但我认为 JAXB 可以做任何事情......

最佳答案

流可以预先编码长度,它可以以特殊字符(如 EOF)结尾,或者服务器可以关闭连接。如果您预先对长度进行编码,则可能需要构造某种特殊的输入流,该输入流在这么多字符后会自行关闭。这就像带有 Content-Length header 和管道的 HTTP。如果以 EOF 等特殊字符结尾,则必须将该字符视为保留字符。另外,如上所述,您将需要一个特殊的输入流。这次当它读取特殊字符时已经很接近了。它不能出现在您的数据中,因为它现在是元字符。关闭连接就像没有管道的 HTTP 一样。

关于java - JAXB 通过套接字解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11002131/

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