抄自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选项。和系统的设置有关联。

最新文章

  1. C#学习总结之集合
  2. linux工具
  3. ectouch 常用功能
  4. CPU 材料学才是最顶级的学科
  5. eclipse 编辑器的使用
  6. win8 64位系统,安装JDK的步骤及其环境配置
  7. 【HDOJ】4612 Warm up
  8. jar 命令使用详解
  9. Swift - 区间运算符(... 和 ..<)
  10. Laravel 开发笔记
  11. RDLC报表纵向合并单元格。
  12. TComboBox组件重要属性和事件
  13. RabbitMQ 默认端口号
  14. Django用户继承AbstractUser后密码为明文
  15. JS-词法作用域 作用域链
  16. op 和 oo 的区别
  17. Myeclipse在debug模式下没加断点程序卡住,start模式下可以正常启动
  18. java:从指定问价中读取80个字节写入指定文件中
  19. Swift字符串常用方法
  20. IntelliJ IDEA的安装和使用教程

热门文章

  1. android的hook方面知识点
  2. JQuery实现锚点平滑滚动
  3. ExtJS清除表格缓存
  4. Learning Ansible with Vagrant
  5. QWebView_QWebEngineView
  6. 并发编程-synchronized关键字大总结
  7. java中interrupt、join、sleep、notify、notifyAll、wait详解
  8. Mongo配置基础
  9. php多站点配置以及Forbidden You don't have permission to access / on this server问题解决
  10. Rails-treasure chest4: 使用图表对资料进行分析chart.js(及其他);管理用户权限的gem 'Pumdit'(6000🌟)