Java для ERLANG сообщений
-
29-09-2019 - |
Вопрос
Я делаю заявку в Эрланге, с графическим интерфейсом в Java. Мне удалось установить связь между на языках, но теперь мне нужно (я думаю) отправьте сообщение от Java в Erlang, каждый раз, когда я нажимаю кнопку.
Это правильный путь?
Как бы выглядел такое сообщение?
Я нашел несколько хороших сайтов об этой форме интеграции, но я чувствую, что я не получаю все.
Решение
Если jinterface слишком сложно, вы можете просто использовать опцию пакетов на Open_Port и использовать
byte[] in_buf = new byte[256];
byte[] out_buf = new byte[256];
int in_count = System.in.read ();
int offset = 0;
do
{
int c = System.in.read (in_buf, offset, in_count-offset);
offset += c;
}
while (offset < in_count);
Читать пакеты из Erlang и писать использование:
System.out.write(out_count);
System.out.write(out_buf, 0, out_count);
На стороне Эрланга это будет соответствовать с
open_port({spawn, "<path-to-java> -cp <classpath> your-java-prog",
[{packet, 1}]).
Если вам нужны большие пакеты, используйте {packet, 2} или {packet, 4} и адаптировать Java. Внутри пакетов вы можете запустить любой протокол, который вам нравится с обеих сторон.
Другие советы
Помимо классической связи Java-Erlang через OTP Jinterface, вы можете исследовать такие методы, как:
- thrift
- ice from zeroC (no official erlang binding)
- maybe two http servers on both sides (I like this approach)
- protocol buffers (rather not, it is better for larger data transfers)
Вам нужно изучать форму вашего трафика и выбрать лучшее решение. Jinterface не так плохо, то .. (вот официальный документ: http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html.)
Я работаю над приложением, похожему на ваш: C ++ GUI и Erlang Server. Я использую розетки TCP для обмена сообщениями между графическим интерфейсом GUI и сервером и серверами Erlang для обработки запросов (у меня может быть более одного графического интерфейса, подключенного к серверу одновременно).