2011年8月3日水曜日

JavaとActionScriptでのソケット通信について

JavaとActionScript間のソケット通信はJava側にDataOutputStream,DataInputStreamクラスのwriteUTF,readUTFメソッドを使い
ActionScript側ではSocketクラスのwriteUTF,readUTFメソッドを使うことで相互に文字列をやりとりすることができます.

このときActionScriptではイベントリスナーにソケットからデータを受け取る動作を登録する必要があります、しかしJava側のwriteUTFがActionScriptよりも高速に実行されてしまうとイベントリスナーで不具合が発生するようで、Java側で送信した回数よりもActionScriptで受信する回数が少なくなってしまうようです.

強制的にJavaの送信間隔を長くするか、一定以上の文字列がたまってから送信するようにしたがイマイチ動作が安定しないためしっかりとした原因を探ろうと考えてます

追記:2011/08/05
送信する際にJava側でThread.sleep(200)で送信の間に間隔を持たせることでただしいタイミングで通信することができました.
このあたりの値はプログラムによって違うと思いますが私の環境ではこれがベストタイミングのようです.

追記:2011/09/01
受信可能フラグを利用した方が安定するみたいです
送信の際にJava(Server)でいったん送信を行ったらフラグをfalseに設定します
次に送信を行うためにはASから受信可能Message(任意の文字列"can,receive"など)を受け取ってフラグをtrueに設定する必要があるという設計にしました

0 件のコメント:

コメントを投稿

Web Analytics