2012-04-13 34 views
3

我们有一个应用程序正在通过套接字与Flash客户端通信。这些消息是XML格式,不会太长,最多可达1000个字符。从6.21到6.31的Java更新后,应用程序无法正常工作

更新消息不被在客户端侧正确地接收后 - 一个字节丢失在末端。第一条消息是正确的,从第二条消息的末尾丢失该字节,由于解析错误,Flash停止。

应用在生产上运行Linux,但我可以复制错误在Windows我的开发环境。

有用于通信两类:

<a href="http://pastebin.com/3dd2Jzsq">WrappedInputStream</a> 

<a href="http://pastebin.com/hwVwNe4A">WrappedOutputStream</a> 

我可以修改Java源代码,但我不能够修改Flash客户端。

任何人都经历了类似的问题在Java更新后?有没有办法如何解决它?

+0

所以WrappedOutputStream是相同,除了它的BufferedOutputStream发送一个0和冲洗()时关闭()被调用? WrappedInputStream是一个BufferedInputStream,它在调用close()时跳到0。 – 2012-04-13 12:15:19

+0

是的,我认为是。不幸的是,应用程序的通信部分不是由我做的。无论如何,它一直运行良好,直到更新。 – miloxe 2012-04-13 12:31:42

+0

@PeterLawrey不,它没有做任何这样的事情。 JavaDoc说它做了什么,但。 – 2012-04-13 13:35:13

回答

2

我会在使用ByteArrayInputStream和ByteArrayOutputStream和/或PipedInputStream + PipedOutputStream的地方编写一些单元测试,并尝试模拟该问题。

也就是说,如果这真的是一个Java问题,你应该能够写一个失败(根据您所看到的失败,闪光灯)自包含测试

0

你可以尝试以确保该WrappedOutputStream是正确关闭。由于此流的目的是在不关闭父流的情况下发送一些数据,因此开发人员可能存在一些误解,因此流没有关闭。

相关问题