`
AvinDev
  • 浏览: 113671 次
社区版块
存档分类
最新评论

Erlang网络编程-packet参数

阅读更多
gen_tcp:listen(Port, Options),Options 为一个参数列表

之前介绍过 {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.


之前介绍过一个愚蠢的方案,用于演示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 这些协议,大大方便开发
分享到:
评论

相关推荐

    erlang-23.2.3-1.el7.x86_64.rpm和erlang-23.2.1-1.el7.x86_64.rpm.rar

    标题中的"erlang-23.2.3-1.el7.x86_64.rpm"和"erlang-23.2.1-1.el7.x86_64.rpm.rar"代表了两个不同的Erlang版本。`.rpm`文件是用于Red Hat Enterprise Linux (RHEL) 和其衍生发行版如CentOS的软件包管理格式,而`....

    erlang-solutions-1.0-1.noarch.rpm

    erlang-solutions-1.0-1.noarch.rpm erlang-solutions-1.0-1.noarch.rpm

    erlang-22.3-1.el7.x86_64.rpm

    在标题"erlang-22.3-1.el7.x86_64.rpm"中,我们可以解读出几个关键信息: 1. **版本号**:22.3-1表示这是Erlang的一个特定版本,22.3是主版本号和次版本号,而-1可能代表修订或更新次数。 2. **操作系统兼容性**:...

    erlang-18.3-1.el7.centos.x86_64.zip

    在标题中的"erlang-18.3-1.el7.centos.x86_64.zip",我们看到的是Erlang的一个特定版本,18.3,针对64位的CentOS 7操作系统(el7)的安装包。这个版本的Erlang包含了必要的组件和服务,使得它能够在CentOS 7上稳定...

    esl-erlang-25.0.3-1-centos-7-amd64.rpm erlang-25.0.3-1 rpm

    esl-erlang_25.0.3-1_centos_7_amd64.rpm erlang_25.0.3-1 rpm用于rabitmq基础环境安装

    erlang-xmerl-22.3-1.el7.x86_64.rpm 镜像下载

    erlang-xmerl-22.3-1.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

    erlang-21.3-1.el7.x86_64.rpm

    erlang-21.3-1.el7.x86_64.rpm rabbitmq基础语言环境。

    esl-erlang_23.0.2-1_centos_7_amd64.rpm

    erlang_23.0.2-1版本 centos7 64bit esl-erlang_23.0.2-1_centos_7_amd64.rpm

    esl-erlang-24.2.1-1-centos-7-amd64.rpm

    esl-erlang_24.2.1-1_centos_7_amd64.rpm

    erlang-24.0.3-1.el8.x86_64.rpm资源

    erlang-24.0.3-1.el8.x86_64.rpm资源

    erlang-23.2.1-1.el7.x86-64.rpm

    Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ 是用 Erlang 编写的,因此需要 Erlang 运行时。确保安装了兼容的 Erlang 版本;Erlang:RabbitMQ ...

    erlang-24.3.3-1.el9.x86_64.rpm

    erlang-24.3.3-1.el9.x86_64.rpm centos

    erlang-xmerl-23.0.2-2.el7.x86_64.rpm

    erlang-xmerl-23.0.2-2.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

    erlang-19.0.4-1.el7.centos.x86_64.zip

    标题中的"erlang-19.0.4-1.el7.centos.x86_64.zip"揭示了我们讨论的是Erlang的一个特定版本——19.0.4,该版本针对的是Linux发行版CentOS 7的64位架构。Erlang的版本号通常包括主要版本号、次要版本号和补丁版本号,...

    erlang-19.0.4-1.el7.centos.x86_64.rpm

    安装过程通常通过命令行工具如`yum`或`dnf`进行,命令可能是`sudo yum install erlang-19.0.4-1.el7.centos.x86_64.rpm`或`sudo dnf install erlang-19.0.4-1.el7.centos.x86_64.rpm`,具体取决于你的系统配置。...

    erlang-20.3-1.el7.centos.x86_64.rpm

    erlang-20.3-1.el7.centos.x86_64.rpm

    erlang-xmerl-23.0.3-1.el7.x86_64.rpm 镜像下载

    erlang-xmerl-23.0.3-1.el7.x86_64.rpm,rabbitMQ安装需要依赖此环境。Erlang 是一种多用途编程语言,主要用于开发并发和分布式系统。它最初是一种专有的编程语言,Ericsson 使用它来开发电话和通信应用程序。

    esl-erlang-26.0.2x86-64.zip

    error: /tmp/esl-erlang_26.0.2-1~alinux~3_x86_64.rpm : not an rpm package (or packape manifest): arning: /tmp/rabbitmg-erver 3.12.4-1 all.rpm: Header V4 RSA/SHA512 Signature, key ID 6026dfca: NOKEY ...

    erlang-23.2.1-1.el7.x86_64.rpm

    erlang-23.2.1-1.el7.x86_64.rpm

    erlang-rpm-21.3.4.zip

    "erlang-rpm-21.3.4.zip"是一个包含Erlang版本21.3.4的RPM(Red Hat Package Manager)包的压缩文件,适用于Linux操作系统,尤其是基于RPM包管理系统的发行版,如CentOS、Fedora和RHEL等。 Erlang的主要特点包括: ...

Global site tag (gtag.js) - Google Analytics