Какой самый лучший и быстрый способ связи между двумя приложениями? - PullRequest
2 голосов
/ 15 сентября 2011

Я сделал Java-программу просто для удовольствия, эта программа позволяет вам управлять секундной компьютерной мышью, используя первую компьютерную мышь. поэтому каждый раз, когда мышь перемещает некоторые x и y, курсор отправляется клиентскому приложению. который затем использует класс робота для перемещения мыши. сейчас я использую сокеты для общения, и это очень медленно, что является лучшим способом сделать это, любая помощь будет приветствоваться. если возможно, укажите код спасибо

Ответы [ 3 ]

5 голосов
/ 15 сентября 2011

Если оба приложения живут в разных виртуальных машинах, то общение через сокеты является очень хорошим подходом.

Если оно слишком медленное, вы можете рассмотреть

  • с использованием протокола 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);

(Он начинается и заканчивается магией, смысл в кодировке)

1 голос
/ 15 сентября 2011

Полагаю, розетки - ваш лучший выбор.Вы можете попытаться изучить дополнительную информацию о JFS (Java Fast Sockets), который является проектом от Университета Ла-Корунья в Испании, но я не уверен, насколько далеко они зашли с ним.Подробнее здесь

0 голосов
/ 15 сентября 2011

Существует так много способов взаимодействия между процессами между двумя машинами - но я не думаю, что какой-либо из них будет быстрее, чем необработанные сокеты, и будет работать для событий мыши:

  1. Использовать очередь JMS
  2. Использовать БД
  3. Используйте WS
...