accept(ListenSocket, Timeout :: nowait) ->
{ok, Socket} |
{select, SelectInfo} |
{completion, CompletionInfo} |
{error, Reason}
OTP 22.1accept(ListenSocket,
Handle :: select_handle() | completion_handle()) ->
{ok, Socket} |
{select, SelectInfo} |
{completion, CompletionInfo} |
{error, Reason}
OTP 24.0ListenSocket = Socket = socket()
SelectInfo = select_info()
CompletionInfo = completion_info()
Reason =
posix() |
closed |
invalid() |
{create_accept_socket, posix()} |
{add_socket, posix()} |
{update_accept_context, posix()}
与接受/1但很快就返回了。
当没有待返回的连接时,该函数将返回(onUnix){select, SelectInfo}
或(在Windows){completion, CompletionInfo}
,当客户端连接时,调用者稍后将收到以下消息之一(取决于平台):
select
message-
{'$socket', Socket, select, SelectHandle}
(与SelectHandle
包含在SelectInfo
)。随后对
accept/1,2
的调用将返回套接字。 completion
message-
{'$socket', Socket, completion, {CompletionHandle, CompletionStatus}}
(与CompletionHandle
包含在CompletionInfo
)。接受的结果将在
CompletionStatus
中。
如果 time-out 参数是 Handle
,则该术语将包含在返回的 SelectInfo
或 CompletionInfo
以及相应的选择或完成消息中。 Handle
被认为对于该调用是唯一的。
如果 time-out 参数是 nowait
:
- On Unix
-
还有一个
SelectInfo
返回时,它将包含一个select_handle()
由调用生成。 - On Windows
-
还有一个
CompletionInfo
返回时,它将包含一个completion_handle()
由调用生成。
如果调用者不想等待连接,则必须立即调用cancel/2
取消操作。
在 unix 上,请注意,如果进行多次调用,则只有最后一个调用是"valid":
{select, {select_info, _Handle1}} = socket:accept(LSock, nowait),
{select, {select_info, _Handle2}} = socket:accept(LSock, nowait),
receive
{'$socket', LSock, select, Handle2} ->
{ok, ASock} = socket:accept(LSock, nowait),
.
.
.
end
在上面的示例中,一旦进行第二次(接受)调用,只有 Handle2
有效(第一次调用自动为 "cancelled",并在进行第二次调用时发送中止消息)。
相关用法
- erlang accept(ListenSocket, Timeout :: integer() >= 0)用法及代码示例
- erlang accept(ListenSocket)用法及代码示例
- erlang acos用法及代码示例
- erlang asin用法及代码示例
- erlang atan用法及代码示例
- erlang abs用法及代码示例
- erlang all用法及代码示例
- erlang any用法及代码示例
- erlang append用法及代码示例
- erlang atom_to_list用法及代码示例
- erlang atom_to_binary用法及代码示例
- erlang absname(Filename)用法及代码示例
- erlang abs(Float)用法及代码示例
- erlang adler32(OldAdler, Data)用法及代码示例
- erlang adler32_combine(FirstAdler, SecondAdler, SecondSize)用法及代码示例
- erlang alias()用法及代码示例
- erlang append_element(Tuple1, Term)用法及代码示例
- erlang apply(Module, Function, Args)用法及代码示例
- erlang atom_to_binary(Atom, Encoding)用法及代码示例
- erlang atom_to_list(Atom)用法及代码示例
- erlang allocations(Options)用法及代码示例
- erlang all(Pred, Q :: queue(Item))用法及代码示例
- erlang any(Pred, Q :: queue(Item))用法及代码示例
- erlang atomic_load(Modules)用法及代码示例
- erlang append(Key, Value, Orddict1)用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 accept(ListenSocket, Timeout :: nowait) -> {ok, Socket} | {select, SelectInfo} | {completion, CompletionInfo} | {error, Reason}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。