2

我做了一个java程序只是为了好玩这个程序允许您使用第一台计算机的鼠标控制第二台计算机鼠标。所以每次鼠标移动一些光标的 x 和 y 时都会发送给客户端应用程序。然后使用机器人类来移动鼠标。现在我正在使用套接字进行通信,而且它真的很慢什么是更好的方法来做到这一点,任何帮助都会得到帮助。如果可能请提供一些代码谢谢

4

3 回答 3

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);

(它以某种魔法开始和结束,重点是编码)

于 2011-09-15T06:56:32.173 回答
1

我猜套接字是你最好的选择。您可以尝试研究有关 JFS(Java 快速套接字)的更多信息,这是西班牙拉科鲁尼亚大学的一个项目,但我不确定他们在这方面走了多远。更多信息在这里

于 2011-09-15T07:00:10.640 回答
0

两台机器之间的进程间通信有很多方法 - 但我认为它们中的任何一种都不会比原始套接字更快并且适用于鼠标事件:

  1. 使用 JMS 队列
  2. 使用数据库
  3. 使用 WS
于 2011-09-15T08:22:48.743 回答