2011-09-15 21 views
2

私は楽しいだけのJavaプログラムを作った、このプログラムは、最初のコンピュータのマウスを使用して秒のコンピュータマウスを制御することができます。マウスがいくらか動くたびに、カーソルのxとyがクライアントアプリケーションに送られます。ロボットクラスを使用してマウスを移動します。今私は通信するためにソケットを使用しています、そして、それは本当に遅く、それを行うためのより良い方法は何か助けになるでしょう。可能であれば、いくつかのコードを提供してください ありがとう2つのアプリケーション間で通信するための最善の方法と最速の方法は何ですか?

+0

まあ、遅さから来るんキュー?基準! –

+0

...タグ付きJSP?この*他のアプリケーションは、Webベースですか? –

+0

ご迷惑をおかけして申し訳ありませんでした。 –

答えて

5

両方のアプリケーションが異なる仮想マシンにのライブの場合、ソケット経由の通信は非常に良いアプローチです。それは遅すぎる場合

、あなたはあなたのサーバ/クライアントコードでUDPプロトコルの代わりにTCP/IP

  • 外観を使用して

    • を考慮することができる、性能がそこに殺さすることができます。

    あなたがこの回答にコメントを考える:

    あなたがソケットの上にバイトを送信すると、あなたはbyte値にマウスの位置をエンコードした場合、パフォーマンスがStringにではなく、その後に増加されます。

    int x = getX(); 
    int y = getY(); 
    // let's assume we have a 16Bit/2Byte range for both values (practica) 
    byte[] message = new byte[4]; 
    message[0] = (byte) (x >> 8) & 0xff; 
    message[1] = (byte) x & 0xff; 
    message[2] = (byte) (y >> 8) & 0xff; 
    message[3] = (byte) y & 0xff; 
    sendViaSocket(message); 
    

    (これはいくつかの魔法で始まり、終わりですが、そのポイントはエンコーディングです)

  • +0

    送受信方法のコードを表示してください。*改善の余地があるかもしれません。* –

    +0

    これは有効な質問でもまだわかりません。私がかなりやっているのはxとyの文字列をクライアントに送り、文字列を解析して与えられたxとyにマウスを動かすことです。これは良いaproachですか? –

    1

    私はソケットがあなたの最善の策だと思います。スペインのACoruña大学のプロジェクトであるJFS(Java Fast Sockets)についての詳しい情報を調べることはできますが、どのくらい進んでいるのかは分かりません。詳細情報here

    +0

    それを指摘してくれてありがとう、私はそれを調べます –

    0

    あり二つのマシン間のプロセス間通信のための非常に多くの方法がある - しかし、私はそれらのいずれかがrawソケットよりも高速であることを行っているとマウスイベントのために働くだろうとは思わない:

    1. 使用JMS
    2. が使用DB
    3. 使用WS
    関連する問題