2010-11-09 14 views

cevap

2

jinterface de sadece erlang gelen paketleri okumak için

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

open_port üzerinde paket seçeneği kullanmak ve kullanabilir komplike ise ve kullanımını yazmak için:

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

erlang tarafında bununla eşleşir

open_port({spawn, "<path-to-java> -cp <classpath> your-java-prog", 
      [{packet, 1}]). 

Daha büyük paketlere ihtiyacınız varsa {packet, 2} veya {packet, 4} tuşlarını kullanın ve java'yı uyarlayın. Paketlerin içinde her iki tarafta istediğiniz protokolü çalıştırabilirsiniz.

3

OTP jinterface aracılığıyla klasik Java Erlang iletişimi yanında sizin gibi bu tür yöntemleri araştırma yapabilirsiniz:

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

Sen trafik şeklini öğrenmek ve en iyi çözümü seçmek gerekir. Jinterface tho .. (Burada resmi doc geçerli: http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html), o kadar kötü değil

+1

+1. –

+0

Harika şeyler! teşekkürler – Handsken

+0

Erlang'dan Java'ya mesaj yollamayı ve başarıyla almayı başardım. [Bu örnekte çoğunlukla] [1]. Ama benim için asıl önemli olan başka bir şeydi. Java'dan Erlang'a gönderme. Erlang'dan aldığım Pid'e bir mesaj göndermem gerektiğini tahmin ediyorum. [1]: http://pdincau.wordpress.com/2010/01/07/how-to-create-a-java-erlang-node-with-jinterface/ – Handsken

1

Sizinkilere benzer bir uygulama üzerinde çalışıyorum: C++ GUI ve Erlang server. GUI ve sunucu arasında mesaj alışverişi yapmak için TCP soketleri ve istekleri işlemek için Erlang sunucu kalıpları kullanıyorum (aynı anda sunucuya bağlanmış birden fazla GUI'ye sahip olabilirim). [Thrift] (http://thrift.apache.org/) için

İlgili konular