2

私は楽しみのためにJavaプログラムを作成しました。このプログラムを使用すると、最初のコンピューターのマウスを使用して秒のコンピューターのマウスを制御できます。したがって、マウスを動かすたびに、カーソルのxとyがクライアントアプリケーションに送信されます。次に、ロボットクラスを使用してマウスを移動します。現在、私は通信にソケットを使用していますが、それを行うためのより良い方法は本当に遅いです。可能であれば、コードに感謝します

4

3 に答える 3

5

両方のアプリケーションが異なる仮想マシンに存在する場合、ソケットを介した通信は非常に優れたアプローチです。

遅すぎる場合は、検討することができます

  • TCP/IPの代わりにUDPプロトコルを使用する
  • サーバー/クライアントコードを見てください。そこでパフォーマンスが低下する可能性があります。

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

ソケットを介してバイトを送信する場合、マウスの位置を次の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);

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

于 2011-09-15T06:56:32.173 に答える
1

ソケットが最善の策だったと思います。スペインのア・コルーニャ大学のプロジェクトであるJFS(Java Fast Sockets)についてもっと情報を調べてみることができますが、彼らがどこまで進んだかはわかりません。詳細はこちら

于 2011-09-15T07:00:10.640 に答える
0

2台のマシン間のプロセス間通信には非常に多くの方法がありますが、それらのいずれもrawソケットよりも高速であり、マウスイベントで機能するとは思いません。

  1. JMSキューを使用する
  2. DBを使用する
  3. WSを使用する
于 2011-09-15T08:22:48.743 に答える