2012-04-13 65 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是正確關閉。由於此流的目的是在不關閉父流的情況下發送一些數據,因此開發人員可能存在一些誤解,因此流沒有關閉。

相關問題