2

別の SO ディスカッションでは、ネットワーク通信に XDR エンコードされたパケットを使用している別の非 Erlang アプリケーションに erlang アプリケーションを接続することについて話しました。

残念ながら、erlang を使用して XDR データを処理するための実際の指針を実際に見つけることはできませんでした。

では、erlang で XDR エンコードされたデータを処理する推奨される方法は何ですか?

ありがとう

PS: これまでのところ、次のリソースを見つけることができました。

4

2 に答える 2

0

独自のXDRエンコードおよびデコードライブラリを構築することは難しくありません。

Erlang用語をXDRにエンコードするのは簡単です。

%% @spec push_bool(bool()) -> binary()

push_bool(Value) ->
    case Value of
        true ->
           <<0, 0, 0, 1>>;
        false ->
            <<0, 0, 0, 0>>
    end.

エラー報告をどのように実行するかによって、逆の方法はもう少し冗長になります。私は例外を選択しました:

%% @spec pull_bool(binary()) -> {bool(), binary()}

pull_bool(Bin) ->
    {Value, Tail} = 
        try
            <<0, 0, 0, V, T/binary>> = Bin,
            {V, T}
        catch 
            error:{badmatch, _} -> 
                throw({xdr_error, "Invalid boolean value"})
        end,
    Result = case Value of
                 0 -> false;
                 1 -> true;
                 _ -> throw({xdr_error, "Invalid boolean value"})
             end, 
    {Result, Tail}.

XDRデータ型は実際にはそれほど多くないため、合計で数百行のコードになる可能性があります。

于 2009-05-30T01:50:15.133 に答える