سؤال

أقوم بتقديم طلب في إرلانج ، مع واجهة المستخدم الرسومية في جافا. لقد تمكنت من إنشاء اتصال بين اللغات ، لكنني الآن بحاجة إلى (أعتقد) إرسال رسالة من Java إلى Erlang ، في كل مرة أقوم بالضغط على زر.

هل هذه هي الطريقة الصحيحة للذهاب؟

كيف تبدو هذه الرسالة؟

لقد وجدت بعض المواقع الجيدة حول هذا النوع من التكامل ، لكنني أشعر أنني لا أحصل على كل شيء.

http://www.trapexit.org/how_to_communicate_java_and_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);

لقراءة الحزم من إرلانج وكتابة الاستخدام:

System.out.write(out_count);
System.out.write(out_buf, 0, out_count);

على الجانب Erlang سوف يتطابق مع

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 لتبادل الرسائل بين واجهة المستخدم الرسومية والخادم ، وأنماط خادم Erlang للتعامل مع طلبات المعالجة (قد يكون لدي أكثر من واجهة المستخدم الرسومية مدمن مخدرات على الخادم في نفس الوقت).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top