两个应用程序之间通信的最佳且最快的方式是什么?

发布于 2024-12-04 13:34:25 字数 173 浏览 0 评论 0原文

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

I made a java program just for fun this program allows you to control the seconds computer mouse using the first computer's mouse. so everytime the mouse moves some the x and the y of the cursor is sent client application. which then uses the robot class to move the mouse. right now I am using sockets to communicate and it is really slow what is a better way to do it any help would be apritited. if possible please provide some code
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

聚集的泪 2024-12-11 13:34:26

如果两个应用程序位于不同的虚拟机中,那么通过套接字进行通信是一个非常好的方法。

如果太慢,您可以考虑

  • 使用 UDP 协议而不是 TCP/IP
  • 查看您的服务器/客户端代码,性能可能会受到影响。

考虑到您对此答案的评论:

当您通过套接字发送字节时,如果将鼠标位置编码为字节值而不是字符串,性能将会提高code>:(

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

它以一些魔法开始和结束,重点是编码)

If both applications live in different virtual machines, then communication via sockets is a very good approach.

If it is too slow, you may consider

  • using UDP protocol instead of TCP/IP
  • look at you server/client code, performance may be killed there.

Considering you comment to this answer:

As you send bytes over sockets, performance will be increased if you encode the mouse positions to byte values rather then to 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);

(It starts and ends with some magic, the point is the encoding)

瑾夏年华 2024-12-11 13:34:26

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

I guess sockets was your best bet. You can try to research more info about JFS (Java Fast Sockets) which is a project from the University of A Coruña in Spain, but I'm not sure how far they went with it. More info here

疯了 2024-12-11 13:34:26

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

  1. 使用 JMS 队列
  2. 使用 DB
  3. 使用 WS

There are so many ways for inter process communication between two machines - But I don't think any of them are going to be faster than raw sockets and will work for mouse events:

  1. Use JMS queue
  2. Use a DB
  3. Use a WS
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文