作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下简单回显服务器的 erlang 代码:
回声监听器:
-module(echo_listener).
-export([start_link/1]).
-define(TCP_OPTIONS, [binary, {packet, 0}, {reuseaddr, true},
{keepalive, true}, {backlog, 30}, {active, false}]).
start_link(ListenPort) ->
{ok, ListenSocket} = gen_tcp:listen(ListenPort, ?TCP_OPTIONS),
accept_loop(ListenSocket).
accept_loop(ListenSocket) ->
{ok, ClientSocket} = gen_tcp:accept(ListenSocket),
Pid = spawn(echo_worker, usher, [ClientSocket]),
gen_tcp:controlling_process(ClientSocket, Pid),
accept_loop(ListenSocket).
-module(echo_worker).
-export([echo/1]).
echo(ClientSocket) ->
case gen_tcp:recv(ClientSocket, 0) of
{ok, Data} ->
gen_tcp:send(ClientSocket, Data),
echo(ClientSocket);
{error, closed} ->
ok
end.
最佳答案
Erlang 文档说明了 gen_tcp:controlling_process/1:
Assigns a new controlling process Pid to Socket. The controlling process is the process which receives messages from the socket. If called by any other process than the current controlling process, {error, not_owner} is returned.
关于sockets - erlang:到controlling_process(),或者不到controlling_process(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22650774/
我想知道一个进程是否Pid如果使用 gen_tcp:controlling_process(Socket, Pid), 创建控制进程,则在套接字关闭时终止以及套接字在什么条件下发送此消息{tcp_cl
我是一名优秀的程序员,十分优秀!