erlang otp中的socket参数设置

超自http://www.zackzod.me/2012/10/24/socket-options-in-erlang-otp.html

Erlang的inet模块里提供了对Socket进行一系列参数设置的接口 setopts(Socket, Options)。可设置的参数目前有28个,其中有一个在R16版本里计划去除。以下是对几个常用参数的设置做的记录。

{active, true | false | once}

默认值是true。但是由于设置为true的情况下是没有flow control的,所以一般不会使用这个默认值。false的需要每次通过代码精确指定消息数据的接收,视需要而定。通常once是比较常用的设置。

{delay_send, Boolean}

默认值为false。此时发送给socket的数据会立即尝试通过网络投递,若设置为true,则所有消息会在一开始就进入队列,之后才会发送。对于网络使用繁重但实时性要求没那么高的应用情景来说,设置true会节省网络的占用频度。

{keepalive, Boolean}

默认值为false。设置为true能对一些异常断线的情况进行检测和释放,值得需要注意的是,这个与系统的tcp_keep_alive_time相关。需要将tcp_keep_alive_time设置到一个合理的值。

binary

通常我们都指定以二进制的形式来处理Packet的数据。

{nodelay, Boolean}

即便少量数据也立即发送。视应用场景而定,一般对于游戏这种类型的应用而言,设置为true。

{packet, PacketType}

指定Packet的header大小或者类型,需要根据应用情况明确指定。

{reuseaddr, Boolean}

默认是false,一般建议开启,可以复用端口号。同样,这个和系统的设置有关联。

{send_timeout, Integer}
{send_timeout_close, Boolean}

为timeout设定合适的值,send_timeout_close建议设置为true。

{tos, Integer}

设置IP_TOS参数,这个参数代表了IP包的优先级和QoS选项。和系统的设置有关联。

时间: 2024-10-31 16:33:49

erlang otp中的socket参数设置的相关文章

Asp数据库连接出错,请检查Conn.asp文件中的数据库参数设置

Asp数据库连接出错,请检查Conn.asp文件中的数据库参数设置 解决办法: IIS-本地计算机-应用程序池-DefaultAppPool(右键)-高级设置将"启用32位应用程序"设置为true

?Swift语言中为外部参数设置默认值,可变参数,常量参数,变量参数,输入输出参数

引用自这里:Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 目录[-] 7.4.4  为外部参数设置默认值 7.4.5  可变参数 7.4.6  常量参数和变量参数 7.4.7  输入-输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1.2语言快速入门v2.0. [示例7-11]以下的代码就为外部参数toString.withJoiner设置了默认的参数"Swift"和&qu

?Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数

Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1.2语言快速入门v2.0. [示例7-11]以下的代码就为外部参数toString.withJoiner设置了默认的参数"Swift"和"---".代码如下: import Foundation func join(string s1: String, toString

eclipse中,JVM参数设置

eclipse中,JVM参数设置: window - preference - java - install jres - edit - Default VM arguments 填写参数参考: -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m

Mysql : L闪存卡linux中的内核参数设置

将 Nytro WarpDrive 加速卡配置为文件系统 本节说明的操作使您可调整 Nytro WarpDrive 加速卡,增强使用 Oracle Linux with Unbreakable Enterprise Kernel (UEK) 操作系统的性能.这些配置步骤在 UEK 和 Oracle Linux 操作系统中均有效.以下步骤将 Nytro WarpDrive 卡为 MySQL 数据库的每个主服务器和从 服务器配置为一个文件系统.其他选项可用于加倍 Nytro WarpDrive 加速

js中setTimeout()时间参数设置为0的探讨

起因源于一道前端笔试题: var fuc = [1,2,3]; for(var i in fuc){ setTimeout(function(){console.log(fuc[i])},0); console.log(fuc[i]); } 问:控制台会如何打印? chrome打印结果如下: 虽然setTimeout函数在每次循环的开始就调用了,但是却被放到循环结束才执行,循环结束,i=3,接连打印了3次3. 这里涉及到javascript单线程执行的问题:javascript在浏览器中是单线程

vins-mono中的imu参数设置

na:加速度计的测量噪声 nw:陀螺仪的测量噪声 nba: randow walk noise随机游走噪声 nbw:randow walk noise随机游走噪声 ba:加速度计的偏差 bw:陀螺仪的偏差 其中na,nw,nba,nbw,都是零均值高斯模型 ba的导数为nba,bw的导数为nbw. 获取这些参数可以通过imu_utils来获得 https://github.com/gaowenliang/imu_utils 重要的是要注意,这里使用的IMU测量误差模型来自不经历运动和恒定温度的传

理解Erlang/OTP - Application

http://www.cnblogs.com/me-sa/archive/2011/12/27/erlang0025.html 1>application:start(log4erl). 我们就从这一行命令开始说起吧,回车之后可以把log4erl应用程序启动起来.Erlang/OTP中的能完成特定功能集合的组件被称为application. ,application是Erlang代码和功能组织的形式之一([Erlang 0015]Erlang OTP设计原则).application的设计目的是

[Erlang 0127] Term sharing in Erlang/OTP 上篇

之前,在 [Erlang 0126] 我们读过的Erlang论文 提到过下面这篇论文: On Preserving Term Sharing in the Erlang Virtual Machine 地址: http://user.it.uu.se/~kostis/Papers/erlang12_sharing.pdf  摘要:In this paper we describe our experiences and argue through examples why ?attening t