> Erlang中文手册 > decode_packet/3 从一个二进制数据里解码一个协议包

erlang:decode_packet/3

从一个二进制数据里解码一个协议包

用法:

decode_packet(Type,Bin,Options) -> {ok,Packet,Rest} | {more,Length} | {error,Reason}

根据指定类型 Type 的包协议,解码一个二进制数据 Bin。很像 Socket 的包处理选项 {packet,Type}。

如果整个数据包包含在二进制数据 Bin 里,那么它将以 {ok,Packet,Rest} 的形式,跟剩余的二进制数据一起返回。

如果二进制数据并不完全包含整个数据包,那么将返回 {more,Length}。变量 Length 或是数据包的总大小,或返回 undefined(如果包的大小读取不了的话)。后来添加的更多数据可以被函数 erlang:decode_packet/2 再次调用处理。

如果数据包并不符合协议格式,那么将返回 {error,Reason}。

erlang:decode_packet(1, >, []).
erlang:decode_packet(1, >, []).