2009-09-25 21 views
5

Có cách nào để truy vấn bảng tên mà epmd daemon quản lý không?Erlang: có API để 'epmd' không?

Chức năng () không hữu ích ở mặt trước đó.

LƯU Ý: Tôi đang tìm một API sang một bên từ phân tích cú pháp đầu ra được tạo ra thông qua thiết bị xuất chuẩn.

Trả lời

6

Để truy vấn các nút rõ ràng cho epmd, hãy gọi:

EpmdModule = net_kernel:epmd_module(). % erl_epmd by default 
EpmdModule:names(). 

Để có được một danh sách các nút kết nối và các cảng của họ:

erlang:system_info(dist). 
erlang:system_info(dist_ctrl). 

Đầu tiên gọi trả về cho bạn bảng trong một định dạng crash dump. Nếu bạn quan tâm đến việc mua các cổng thực tế, hãy sử dụng cổng thứ hai.

+0

Điều này có nghĩa vụ phải hoạt động với các nút có tên ngắn không? Đó là chủ yếu là những gì tôi sử dụng và tôi không nhận được kết quả mong đợi. – jldupont

+0

Đảm bảo các nút được kết nối, ví dụ: gọi net_adm: ping (mynode @ localhost). Làm việc cho tôi. – Zed

+0

Tôi nên rõ ràng hơn: Tôi không muốn phải "kết nối" một cách rõ ràng các nút. Tôi chỉ muốn biết các nút nào có thể truy cập được trong phạm vi giới hạn của "tên miền ngắn". – jldupont

3

Bạn nhận được câu trả lời tương tự như mã Zed bằng cách thực hiện:

net_adm:names() 

Tôi không biết nếu đó là một cách tiêu chuẩn hơn để làm việc đó hay không.

+0

@rob charlton: Cảm ơn! – jldupont

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