`
jias_je
  • 浏览: 39604 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

erlang tcp active 模式

 
阅读更多

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>}


分享到:
评论

相关推荐

    erlang tcp_server

    1. **Erlang OTP(Open Telecom Platform)**:Erlang OTP是一个标准库,提供了强大的模块化设计和容错机制,包括行为模式如GenServer、GenEvent和Supervisor等,这些对于构建可靠的TCP服务器至关重要。 2. **...

    tcp_client:一个Erlang TCP客户端连接管理器

    在Erlang中,TCP客户端连接管理器,如"tcp_client",是用于处理网络通信的常见组件,它负责建立、管理和关闭到服务器的TCP连接。下面我们将详细探讨Erlang中的TCP客户端连接管理以及其在实际应用中的实现。 1. **...

    erlang-gen_tcp手册

    erlang-gen_tcp手册,详细完整,网络tcp开发好东东

    Match在JavaScript中实现类似于Erlang的模式匹配

    在JavaScript中,虽然没有内置的模式匹配功能,但我们可以利用正则表达式和对象解构等特性来模拟Erlang的模式匹配行为。 首先,让我们深入理解Erlang中的模式匹配。在Erlang中,模式匹配是函数定义的一部分,它允许...

    erlang ranch实现的游戏tcp服务器

    了解Erlang的基本语法、模式匹配、进程(process)模型以及错误处理是必要的。 2. **Ranch库**:Ranch库提供了监听套接字、接受连接、管理和终止连接的一整套机制。开发者需要理解Ranch的工作流程,包括启动监听器...

    erlang编程 Introducing Erlang

    Erlang的并发模型和 otp 设计模式使得系统能够轻松实现负载均衡和故障切换。当一个节点或进程失败时,系统可以重新分配工作,确保服务的连续性。 ### 9. BEAM虚拟机 BEAM是Erlang运行时系统的名称,全称为伯尔尼...

    erlang_版本24.3.4.4

    - **模式匹配**:Erlang的模式匹配功能允许在函数定义中使用模式来匹配和解构数据结构,简化了代码编写。 - **OTP(开放电信平台)**:Erlang OTP是一套库和设计原则,提供了构建可靠系统的框架,包括Mnesia数据库...

    erlang资源

    5. **模式匹配**:Erlang的函数定义允许模式匹配,使得代码更加简洁和可读。书中可能会详细解释这一特性及其在并发编程中的应用。 6. **并行算法**:书中可能包含实例,演示如何使用Erlang实现高效的并行算法,提升...

    Erlang与Mysql对接

    在Erlang中,这种接口通常遵循JDBC或ODBC风格的API,尽管Erlang并不直接支持这些接口,而是有类似的设计模式。 对接过程主要包括以下步骤: 1. **安装驱动**:首先,你需要在Erlang环境中安装这个驱动库。这可能...

    erlang25.0 windows版本

    - **行为模式**:如GenServer、GenEvent和Gen_fsm,它们定义了Erlang中服务器、事件处理和状态机的通用行为。 - **Elixir**:基于Erlang VM的现代编程语言,提供了更接近Ruby的语法,同时保留了Erlang的并发特性和...

    Python-TamaleLua的erlang风格模式匹配库

    **Python-TamaleLua的Erlang风格模式匹配库** 在Python编程中,Tamale是一个独特的库,它为Lua语言引入了Erlang风格的模式匹配功能。Erlang模式匹配是一种强大的编程技术,允许程序员根据特定模式来解构值,这种...

    xiandiao_erlang_Erlang课后习题_

    6. **模式匹配**:Erlang的函数调用允许模式匹配,使得解构复杂数据结构变得简单,提高了代码的可读性和可维护性。 课后习题的实践价值: 1. **理解基本语法**:通过解决课后习题,学习者可以熟悉Erlang的基本语法...

    erlang 程序设计 源码

    9. **网络编程**:Erlang天生适合网络编程,因为其内置了对TCP、UDP等协议的支持,可以轻松创建分布式系统。 10. **并行性与分布式**:Erlang节点可以相互通信,形成分布式集群,这使得构建大规模分布式系统变得...

    两本erlang电子书

    读者将了解Erlang的模式匹配、函数式编程概念以及如何利用轻量级进程进行并发编程。第二部分深入探讨OTP,讲解其设计原则和组件,如行为(Behaviours)、分布式编程和监控。最后,第三部分通过构建实际项目,演示...

    centos6下离线安装erlang所需要的所有rpm包

    这里`-i`表示安装,`-v`表示详细模式,`-h`表示显示进度条。 5. **解决依赖问题**: - 在安装过程中,可能会遇到依赖冲突或未满足的依赖。如果出现这种情况,需要找出缺少的依赖,下载相应的RPM包并安装。可以使用...

    《Programming Erlang》

    9. **模式匹配**:Erlang中的模式匹配是其语法的一个强大特性,可以方便地解构复杂的数据结构,简化了函数定义和函数调用。 10. **简洁的语法**:Erlang的语法简洁明了,容易上手,但也有一些独特之处,如使用`.`...

    erlang9.rar

    Erlang语言的核心特点包括轻量级进程(Erlang中的进程与操作系统进程不同,它们更轻便且能快速切换)、模式匹配、函数式编程和热代码替换等。这些特性使得Erlang在处理高并发场景下表现出色,例如在电信、网络设备和...

    erlang聊天室源码

    3. **网络通信模块**:使用Erlang的TCP/UDP套接字接口进行网络通信,连接客户端与服务器,确保数据的可靠传输。 4. **并发处理模块**:利用Erlang的轻量级进程,实现多用户同时在线聊天,保证了系统的并行性和高并发...

    基于Erlang的gen_tcp聊天室代码,功能完整

    基于Erlang的gen_tcp库是其强大的网络编程接口,用于实现TCP协议的应用。在这个场景中,我们讨论的是一个使用Erlang和gen_tcp编写的聊天室应用。 **gen_tcp简介** gen_tcp是Erlang OTP(开放电信平台)提供的一种...

    erlang压缩包.rar

    Erlang使用模式匹配来解构数据结构,并通过消息传递实现进程间的通信。 学习Erlang的关键概念包括: - **模式匹配**:在函数定义中,可以使用模式匹配来确定输入值的结构。 - **列表处理**:Erlang提供了强大的...

Global site tag (gtag.js) - Google Analytics