3

ソケットを介して Flash クライアントと通信するアプリケーションがあります。メッセージは XML 形式で、長すぎず、最大 1000 文字です。

更新後、クライアント側でメッセージが正しく受信されません - 最後に 1 バイトがありません。最初のメッセージは正しく、2 番目のメッセージの最後にバイトがなく、解析エラーのために Flash が停止します。

アプリケーションは本番環境では Linux で実行されていますが、Windows の開発環境でエラーを再現できました。

通信に使用される 2 つのクラスがあります。

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

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

Java ソースは変更できますが、Flash クライアントを変更できません。

Java の更新後に同様の問題を経験した人はいますか? それを修正する方法はありますか?

4

2 に答える 2

2

ByteArrayInputStream と ByteArrayOutputStream および/または PipedInputStream + PipedOutputStream を使用している単体テストをいくつか作成し、問題をシミュレートしようとします。

つまり、これが本当に Java の問題である場合は、失敗する自己完結型のテストを作成できるはずです (フラッシュで失敗するのを見たことに基づいて)。

于 2012-04-13T12:33:41.557 に答える
0

WrappedOutputStreamが適切に閉じられていることを確認してみてください。このストリームの目的は、親ストリームを閉じずにデータを送信することであるため、開発者側で誤解が生じた可能性があり、ストリームは閉じられませんでした。

于 2012-04-13T13:37:44.757 に答える