原创作者: AvinDev
阅读:2519次
评论:0条
更新时间:2011-06-01
gen_tcp:listen(Port, Options),Options 为一个参数列表
之前介绍过 {active, Boolean} 这个 opt,现在介绍一下 {packet, PacketType}
之前介绍过一个愚蠢的方案,用于演示Binary的匹配。现在完全可以这样做:
gen_tcp:listen(Port, [binary, {active, true}, {packet, 2}])
...
receive
{tcp, Socket, Binary} ->
...
这样主动发送过来的Binary,就是一个完整的Body,不包含头部的Size信息,也无需自行处理tcp packet的完整性问题。
此外它还支持 asn1 | cdr | sunrm | fcgi | tpkt | line 这些协议,大大方便开发
之前介绍过 {active, Boolean} 这个 opt,现在介绍一下 {packet, PacketType}
引用
{packet, PacketType} (TCP/IP sockets)
Defines the type of packets to use for a socket. The following values are valid:
raw | 0
No packaging is done.
1 | 2 | 4
Packets consist of a header specifying the number of bytes in the packet, followed by that number of bytes. The length of header can be one, two, or four bytes; the order of the bytes is big-endian. Each send operation will generate the header, and the header will be stripped off on each receive operation.
asn1 | cdr | sunrm | fcgi | tpkt | line
These packet types only have effect on receiving. When sending a packet, it is the responsibility of the application to supply a correct header. On receiving, however, there will be one message sent to the controlling process for each complete packet received, and, similarly, each call to gen_tcp:recv/2,3 returns one complete packet. The header is not stripped off.
The meanings of the packet types are as follows:
asn1 - ASN.1 BER,
sunrm - Sun's RPC encoding,
cdr - CORBA (GIOP 1.1),
fcgi - Fast CGI,
tpkt - TPKT format [RFC1006],
line - Line mode, a packet is a line terminated with newline, lines longer than the receive buffer are truncated.
Defines the type of packets to use for a socket. The following values are valid:
raw | 0
No packaging is done.
1 | 2 | 4
Packets consist of a header specifying the number of bytes in the packet, followed by that number of bytes. The length of header can be one, two, or four bytes; the order of the bytes is big-endian. Each send operation will generate the header, and the header will be stripped off on each receive operation.
asn1 | cdr | sunrm | fcgi | tpkt | line
These packet types only have effect on receiving. When sending a packet, it is the responsibility of the application to supply a correct header. On receiving, however, there will be one message sent to the controlling process for each complete packet received, and, similarly, each call to gen_tcp:recv/2,3 returns one complete packet. The header is not stripped off.
The meanings of the packet types are as follows:
asn1 - ASN.1 BER,
sunrm - Sun's RPC encoding,
cdr - CORBA (GIOP 1.1),
fcgi - Fast CGI,
tpkt - TPKT format [RFC1006],
line - Line mode, a packet is a line terminated with newline, lines longer than the receive buffer are truncated.
之前介绍过一个愚蠢的方案,用于演示Binary的匹配。现在完全可以这样做:
gen_tcp:listen(Port, [binary, {active, true}, {packet, 2}])
...
receive
{tcp, Socket, Binary} ->
...
这样主动发送过来的Binary,就是一个完整的Body,不包含头部的Size信息,也无需自行处理tcp packet的完整性问题。
此外它还支持 asn1 | cdr | sunrm | fcgi | tpkt | line 这些协议,大大方便开发
评论 共 0 条 请登录后发表评论