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}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。