本记得删除了。幸好有 服务器备份,招起来挺麻烦的。
236 wait_resp_mon(Node, Mref, Timeout) ->
237 receive
238 {Mref, Reply} ->
239 erlang:demonitor(Mref, [flush]),
240 {ok, Reply};
241 {'DOWN', Mref, _, _, noconnection} ->
242 exit({nodedown, Node});
243 {'DOWN', Mref, _, _, Reason} ->
244 exit(Reason)
245 after Timeout ->
246 erlang:demonitor(Mref),
247 receive
248 {'DOWN', Mref, _, _, _} -> true
249 after 0 -> true
250 end,
251 exit(timeoutmon)
252 end.
253
254 wait_resp(Node, Tag, Timeout) ->
255 receive
256 {Tag, Reply} ->
257 monitor_node(Node, false),
258 {ok, Reply};
259 {nodedown, Node} ->
260 monitor_node(Node, false),
261 exit({nodedown, Node})
262 after Timeout ->
263 monitor_node(Node, false),
264 exit(timeoutresp)
265 end.
266
267 %%
268 %% Send a reply to the client.
269 %%
分享到:
相关推荐
首先,我们来看一下`chat_client.erl`,这很可能是客户端的实现。客户端通常负责发起连接请求,发送数据到服务器,并接收响应。在修复Bug的过程中,我们需要关注以下几个关键点: 1. **连接建立**:检查`gen_tcp:...
8. **测试与调试**:在开发过程中,使用像`testdns.erl`这样的测试文件可以帮助验证和调试DNS解析代码。这个文件可能包含模拟DNS查询和响应的函数,或者是一些测试用例来确保解析逻辑的正确性。 在实际应用中,了解...
可以通过在命令行输入`erl`来启动。Shell支持与外部程序通信,但文档指出关于这一点会有单独的指南解释。 #### 1.3 并行编程 - **1.3.1 进程**:Erlang的进程与其他语言中的线程类似,但它们是轻量级的,并且通过...
- 建立连接:`gen_tcp:connect(Host, Port, Options)`,其中`Host`是服务器IP,`Port`是服务器端口,`Options`是一些连接选项,如超时时间。 - 发送数据:`gen_tcp:send(Socket, Data)`,`Socket`是连接句柄,`...
- **Gen_Server、Gen_Fsm、Gen_Event**: OTP定义了多种通用的服务器行为,它们基于状态机和事件处理原则,允许开发者专注于业务逻辑的实现。 ### 总结 Erlang入门手册深入浅出地介绍了Erlang语言的基本概念,包括...
- **启动方式**: 在大多数操作系统上,可以通过命令行输入 `erl` 来启动Erlang Shell。 - **功能**: 用户可以测试表达式、定义函数、加载模块等。 - **退出**: 使用 `q().` 命令退出Erlang Shell。 - **模块和...