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

时间:2011-09-15 06:49:00

标签: java inter-process-communicat

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

3 个答案:

答案 0 :(得分:5)

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

如果太慢,你可以考虑

  • 使用UDP协议代替TCP / IP
  • 看看你的服务器/客户端代码,性能可能会在那里被杀死。

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

当你通过套接字发送 bytes 时,如果你将鼠标位置编码为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);

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

  1. 使用JMS队列
  2. 使用数据库
  3. 使用WS