gen_tcp 的 active的值为once在编程上实现控制,
如果采用了非被被动模式,
虚拟机会把接受到的信息用一种消息的方式发给进程邮箱。
譬如下面是服务器接收的一段http请求,receiver:是每次接收的提示信息,
这里可以看到http其实是按照先后顺序发上来的,如果服务器是做http的,
用到once模式是最好不过的,如在第一条receiver匹配成功检查格式正确后再决定是否接收
后面的,如果第一条就不对,后面就没有必要再去取,这种数据有种依赖关系,
假如下面的所有匹配被分别看成是A,B ...J的话,如果不用once,那么你的loop体大概是
这样
loop() ->
A ->done;
B->done;
....
J ->done
一次性要将所有的可能都写上,如果是错误的格式,那么可能C后面的一直不会匹配,而且也
影响函数风格
如果是once
loop() ->
A ->done;
B ->done;
上面A能匹配后再once
loop() ->
C->done;
http://localhost:4017/web/ser
receiver:{http,#Port<0.2186>,{http_request,'GET',{abs_path,"/web/ser"},{1,1}}}
receiver:{http,#Port<0.2186>,
{http_header,14,'Host',undefined,"127.0.0.1:4015"}}
receiver:{http,#Port<0.2186>,
{http_header,24,'User-Agent',undefined,
"Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.04 (lucid) Firefox/3.6.17"}}
receiver:{http,#Port<0.2186>,
{http_header,8,'Accept',undefined,
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}}
receiver:{http,#Port<0.2186>,
{http_header,11,'Accept-Language',undefined,"en-us,en;q=0.5"}}
receiver:{http,#Port<0.2186>,
{http_header,10,'Accept-Encoding',undefined,"gzip,deflate"}}
receiver:{http,#Port<0.2186>,
{http_header,9,'Accept-Charset',undefined,
"ISO-8859-1,utf-8;q=0.7,*;q=0.7"}}
receiver:{http,#Port<0.2186>,{http_header,51,'Keep-Alive',undefined,"115"}}
receiver:{http,#Port<0.2186>,
{http_header,2,'Connection',undefined,"keep-alive"}}
receiver:{http,#Port<0.2186>,http_eoh}
receiver:{tcp_closed,#Port<0.2186>}
分享到:
相关推荐
1. **Erlang OTP(Open Telecom Platform)**:Erlang OTP是一个标准库,提供了强大的模块化设计和容错机制,包括行为模式如GenServer、GenEvent和Supervisor等,这些对于构建可靠的TCP服务器至关重要。 2. **...
在Erlang中,TCP客户端连接管理器,如"tcp_client",是用于处理网络通信的常见组件,它负责建立、管理和关闭到服务器的TCP连接。下面我们将详细探讨Erlang中的TCP客户端连接管理以及其在实际应用中的实现。 1. **...
erlang-gen_tcp手册,详细完整,网络tcp开发好东东
在JavaScript中,虽然没有内置的模式匹配功能,但我们可以利用正则表达式和对象解构等特性来模拟Erlang的模式匹配行为。 首先,让我们深入理解Erlang中的模式匹配。在Erlang中,模式匹配是函数定义的一部分,它允许...
了解Erlang的基本语法、模式匹配、进程(process)模型以及错误处理是必要的。 2. **Ranch库**:Ranch库提供了监听套接字、接受连接、管理和终止连接的一整套机制。开发者需要理解Ranch的工作流程,包括启动监听器...
Erlang的并发模型和 otp 设计模式使得系统能够轻松实现负载均衡和故障切换。当一个节点或进程失败时,系统可以重新分配工作,确保服务的连续性。 ### 9. BEAM虚拟机 BEAM是Erlang运行时系统的名称,全称为伯尔尼...
- **模式匹配**:Erlang的模式匹配功能允许在函数定义中使用模式来匹配和解构数据结构,简化了代码编写。 - **OTP(开放电信平台)**:Erlang OTP是一套库和设计原则,提供了构建可靠系统的框架,包括Mnesia数据库...
在Erlang中,这种接口通常遵循JDBC或ODBC风格的API,尽管Erlang并不直接支持这些接口,而是有类似的设计模式。 对接过程主要包括以下步骤: 1. **安装驱动**:首先,你需要在Erlang环境中安装这个驱动库。这可能...
5. **模式匹配**:Erlang的函数定义允许模式匹配,使得代码更加简洁和可读。书中可能会详细解释这一特性及其在并发编程中的应用。 6. **并行算法**:书中可能包含实例,演示如何使用Erlang实现高效的并行算法,提升...
- **行为模式**:如GenServer、GenEvent和Gen_fsm,它们定义了Erlang中服务器、事件处理和状态机的通用行为。 - **Elixir**:基于Erlang VM的现代编程语言,提供了更接近Ruby的语法,同时保留了Erlang的并发特性和...
**Python-TamaleLua的Erlang风格模式匹配库** 在Python编程中,Tamale是一个独特的库,它为Lua语言引入了Erlang风格的模式匹配功能。Erlang模式匹配是一种强大的编程技术,允许程序员根据特定模式来解构值,这种...
6. **模式匹配**:Erlang的函数调用允许模式匹配,使得解构复杂数据结构变得简单,提高了代码的可读性和可维护性。 课后习题的实践价值: 1. **理解基本语法**:通过解决课后习题,学习者可以熟悉Erlang的基本语法...
9. **网络编程**:Erlang天生适合网络编程,因为其内置了对TCP、UDP等协议的支持,可以轻松创建分布式系统。 10. **并行性与分布式**:Erlang节点可以相互通信,形成分布式集群,这使得构建大规模分布式系统变得...
读者将了解Erlang的模式匹配、函数式编程概念以及如何利用轻量级进程进行并发编程。第二部分深入探讨OTP,讲解其设计原则和组件,如行为(Behaviours)、分布式编程和监控。最后,第三部分通过构建实际项目,演示...
这里`-i`表示安装,`-v`表示详细模式,`-h`表示显示进度条。 5. **解决依赖问题**: - 在安装过程中,可能会遇到依赖冲突或未满足的依赖。如果出现这种情况,需要找出缺少的依赖,下载相应的RPM包并安装。可以使用...
6. **模式匹配**:Erlang的模式匹配机制使得解构复杂数据结构和条件分支变得简单。 7. **BEAM虚拟机**:Erlang运行在BEAM(Erlang虚拟机)上,BEAM为Erlang提供了高效的内存管理和垃圾回收。 8. **标准库**:OTP...
9. **模式匹配**:Erlang中的模式匹配是其语法的一个强大特性,可以方便地解构复杂的数据结构,简化了函数定义和函数调用。 10. **简洁的语法**:Erlang的语法简洁明了,容易上手,但也有一些独特之处,如使用`.`...
Erlang语言的核心特点包括轻量级进程(Erlang中的进程与操作系统进程不同,它们更轻便且能快速切换)、模式匹配、函数式编程和热代码替换等。这些特性使得Erlang在处理高并发场景下表现出色,例如在电信、网络设备和...
Erlang/OTP 26.2.1,Erlang,OTP,26.2.1
3. **网络通信模块**:使用Erlang的TCP/UDP套接字接口进行网络通信,连接客户端与服务器,确保数据的可靠传输。 4. **并发处理模块**:利用Erlang的轻量级进程,实现多用户同时在线聊天,保证了系统的并行性和高并发...