Chinaunix首页 | 论坛 | 博客
  • 博客访问: 885108
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: Erlang

2014-02-25 16:48:00

packet是erlang网络编程中使用频率较高的一个参数,例如: gen_tcp:listen(Port, [binary, {active, true}, {packet,
2}])
表示接收到的包头有两个字节:
receive
{tcp, Socket, Binary} ->
接收到的Binary中将不包含2字节的包头,包头会剥离,我们收到的将只是单纯的Body,这极大的方便了我们编程。

packet支持的参数有:
raw | 0  未完成的packeting,即不管数据包头,而是根据langth参数接收数据。

1 | 2 | 4
表示包头的长度,分别是1,2,4个字节(在大端字节序中还包含一个无符号整型),当设置了此参数时,接收到数据后将自动剥离对应长度的头部,只保留Body。

asn1 | cdr | sunrm | fcgi | tpkt | line
设置以上参数时,应用程序将保证数据包头部的正确性,但是在gen_tcp:recv2,3接收到的数据包中并不剥离头部。

http | http_bin
设置以上参数,收到的数据将被:decode_packet/3格式化,在被动模式下将收到{ok,
HttpPacket},主动模式下将收到{http, Socket, HttpPacket}.
阅读(1276) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~