我有一个 erlang 应用程序,其中包括解析来自套接字(TCP 和 UDP)的二进制数据。二进制数据是根据一些特定的协议,所以我的 TCP 和 UDP sock 选项如下:
TCP 袜子: Opts = [二进制,{packet,0},{reuseaddr,true}, {keepalive, true}, {backlog, 30}, {active, false}],
UDP 袜子: [二进制,{active,once},{recbuf,2097152}]
现在,当我解析从套接字获得的数据时,我确实喜欢这样(在 UNIX 上):
<< 版本:4/大无符号整数单位:8, 长度:2/大无符号整数:8, _Rest/二进制 >> = Bin_event_From_Socket。现在,当在 LINUX 上运行时,这会给我一个问题,因为 LINUX 是基于小端的。所以,对我来说,这里的选项是在上面的代码中将“大”转换为“小”。
但是,Erlang 是一种基于 VM 的语言,我必须具备一些编写平台无关代码的便利。我搜索了 NET,但找不到太多关于它的信息。
那么,这里的问题是如何编写独立于平台的套接字数据解析代码?谢谢。