1.ejabberd监听多个端口

每个网络连接进来,ejabberd都会使用一个进程来负责这个连接的数据处理。原理跟Joe Armstrong的《Erlang程序设计》中的并行服务器一样,就在P196,大家可以看看。

相比于Joe的例子,ejabberd的代码更具有扩展性。在ejabberd_listener.erl文件中,start/3函数会根据要调用的模块的socket_type来启动相关的必备资源。在这个文件里面,假设是tcp连接,调用过程是,start/3 -> start_dependent/3 -> init/3 -> init_tcp/6 -> accept/3 ,最后可能会调用ejabberd_frontend_socket或者ejabberd_socket里面的start/4函数。

在ejabberd_socket.erl文件中,还是会根据要调用的模块的socket_type来调用相关的函数。最后会调用模块里面的start/2函数,正常返回{ok, Pid}.一路看下来,参数中有端口,处理网络连接的模块名,连接时的选项。知道这些就可以轻松配置网络连接。

所以在处理网络连接时,要监听多个网络端口,可以考虑一下ejabberd_listener模块。具体的代码可以参考mod_proxy65_stream.erl。

2.在ejabberd的master库中,自己写的behavior模块,behavior_info函数给注释掉了,难道不需要导出behavior_info函数了吗?这个特性是在什么时候开启的?

转贴请注明来自:格通

最新文章

  1. Linux操作系统主机名(hostname)简介
  2. 【Win10开发】Toast通知——后台激活
  3. EF6(CodeFirst)+MySql开发遇到的坑
  4. Atitti knn实现的具体四个距离算法 欧氏距离、余弦距离、汉明距离、曼哈顿距离
  5. Progress.js – 为页面上的任意对象创建进度条效果
  6. php实现添加图片水印
  7. UIbutton 和UIview 切单角
  8. VPN错误800、错误789
  9. Clean Code(三):注释
  10. VisualSVN Server 从此告别SVN记事本配置
  11. 创建Properties文件
  12. c++模板入门
  13. 帆软的报表系统与泛微OA结合起来,这两个软件麦枫提供了经典的服务。
  14. 计算理论:NFA转DFA的两种方法
  15. Linux系统Shell脚本编程
  16. cogs2479 偏序(CDQ套CDQ)
  17. 【新特性】JDK1.9
  18. ifconfig中lo、eth0、br0、wlan0接口
  19. [ACM International Collegiate Programming Contest, Amman Collegiate Programming Contest (2018)]
  20. nginx,uwsgi,部署django,静态文件不生效问题

热门文章

  1. java synchronized 关键字原理
  2. 从python2.x到python3.x进阶突破
  3. PTA基础编程题目集7-4 BCD解密
  4. Android 项目,没有可运行的Module项
  5. (转) 在Windows 下安装drush
  6. typescript语法
  7. hadoop 家族图
  8. 「专题训练」Boredom(CodeForces Round #260 Div.1 A)
  9. 制作一个App的完整流程是哪些
  10. 【转】cocos2dx3.2学习笔记之Director(导演类)