2010-11-09 53 views
6

Tôi đang tạo một ứng dụng trong Erlang, với giao diện đồ họa bằng Java. Tôi đã quản lý để thiết lập kết nối giữa các ngôn ngữ, nhưng bây giờ tôi cần (tôi đoán) gửi một tin nhắn từ Java đến Erlang, mỗi lần tôi chỉ cần nhấn một nút.Tin nhắn Java tới Erlang

Đó có phải là con đường phù hợp không?

Thông báo như thế nào?

Tôi đã tìm thấy một vài trang web tốt về hình thức tích hợp này, nhưng tôi cảm thấy như không nhận được mọi thứ.

http://www.trapexit.org/How_to_communicate_java_and_erlang

Trả lời

2

Nếu jinterface là quá phức tạp, bạn chỉ có thể sử dụng tùy chọn gói trên open_port và sử dụng

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

Để đọc các gói tin từ erlang và để viết sử dụng:

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

về phía erlang này sẽ phù hợp với

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

Nếu bạn cần các gói lớn hơn, hãy sử dụng {packet, 2} hoặc {packet, 4} và điều chỉnh java. Bên trong các gói, bạn có thể chạy bất kỳ giao thức nào bạn thích trên cả hai mặt.

3

Bên cạnh cổ điển truyền Java Erlang qua OTP jinterface bạn có thể nghiên cứu các phương pháp như vậy như:

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

Bạn cần phải tìm hiểu những hình dạng của giao thông của bạn và chọn giải pháp tốt nhất. Jinterface không phải là quá xấu, tho .. (đây là doc chính thức: http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html)

+1

+1 cho [Tiết kiệm] (http://thrift.apache.org/). –

+0

Công cụ tuyệt vời! cảm ơn – Handsken

+0

Tôi đã quản lý để gửi tin nhắn từ Erlang đến Java và nhận chúng thành công. [Chủ yếu từ ví dụ này] [1]. Nhưng điều chính tôi đã đi là một cách khác. Gửi từ Java đến Erlang. Tôi có một số dự đoán rằng tôi phải trả lại một tin nhắn cho Pid tôi nhận được từ Erlang. [1]: http://pdincau.wordpress.com/2010/01/07/how-to-create-a-java-erlang-node-with-jinterface/ – Handsken

1

Tôi đang làm việc trên một ứng dụng tương tự như ứng dụng của bạn: C++ GUI và máy chủ Erlang. Tôi sử dụng các socket TCP để trao đổi các thông điệp giữa GUI và máy chủ, và các mẫu máy chủ Erlang để xử lý các yêu cầu (tôi có thể có nhiều GUI được nối với máy chủ cùng một lúc).

Các vấn đề liên quan