connect(Socket, Addr, Port, Opts, Timeout) ->
{ok, #sctp_assoc_change{state = comm_up}} |
{error, #sctp_assoc_change{state = cant_assoc}} |
{error, inet:posix()}
Socket = sctp_socket()
Addr = inet:ip_address() | inet:hostname()
Port = inet:port_number()
Opts = [Opt :: option()]
Timeout = timeout()
為套接字 Socket
與 Addr
和 Port
指定的對等方(SCTP 服務器套接字)建立新關聯。 Timeout
,以毫秒表示。一個套接字可以與多個對等點關聯。
使用值Timeout
小於操作係統建立關聯所花費的最長時間(如果默認值來自操作係統,則大約為 4.5 分鍾)RFC 4960使用),可能會導致返回值不一致或不正確。這對於共享相同內容的協會尤其重要Socket
(即源地址和端口),因為控製進程會阻塞,直到connect/*
返回。connect_init/*
提供了一種沒有此限製的替代方案。
的結果connect/*
是一個#sctp_assoc_change{}
事件,特別是包含新的協會ID:
#sctp_assoc_change{
state = atom(),
error = integer(),
outbound_streams = integer(),
inbound_streams = integer(),
assoc_id = assoc_id()
}
出站和入站流的數量可以通過為 connect
提供 sctp_initmsg
選項來設置,如下所示:
connect(Socket, Ip, Port>,
[{sctp_initmsg,#sctp_initmsg{num_ostreams=OutStreams,
max_instreams=MaxInStreams}}])
在嘗試關聯之前,所有選項 Opt
都會在套接字上設置。如果選項記錄具有未定義的字段值,則首先從套接字讀取選項記錄以獲取這些值。實際上,Opt
選項記錄僅定義在連接之前要更改的字段值。
返回的outbound_streams
和inbound_streams
是套接字上的流編號。如果對等方需要較低的值,則這些值可能與請求的值(分別為 OutStreams
和 MaxInStreams
)不同。
state
可以具有以下值:
comm_up
-
協會成立成功。這表明
connect
成功完成。 cant_assoc
-
無法建立關聯(
connect/*
失敗)。
其他狀態通常不會出現在輸出中connect/*
。相反,它們可以發生在#sctp_assoc_change{}
收到的事件而不是數據recv/*
調用。所有這些都表明由於各種錯誤情況而失去關聯,為了完整起見,在此列出:
comm_lost
restart
shutdown_comp
場地error
可以提供更詳細的診斷。這error
字段值可以使用以下方式轉換為字符串error_string/1
.
相關用法
- erlang connect(Address, Port, Opts)用法及代碼示例
- erlang concat用法及代碼示例
- erlang cons(Item, Q1 :: queue(Item))用法及代碼示例
- erlang consult(Filename)用法及代碼示例
- erlang concat(Things)用法及代碼示例
- erlang constant_function(Set, AnySet)用法及代碼示例
- erlang converse(BinRel1)用法及代碼示例
- erlang cos用法及代碼示例
- erlang copy用法及代碼示例
- erlang composite(Function1, Function2)用法及代碼示例
- erlang compose_query(QueryList)用法及代碼示例
- erlang compose_query(QueryList, Options)用法及代碼示例
- erlang chr用法及代碼示例
- erlang ceil(Number)用法及代碼示例
- erlang crc32(OldCrc, Data)用法及代碼示例
- erlang crc32_combine(FirstCrc, SecondCrc, SecondSize)用法及代碼示例
- erlang carriers(Options)用法及代碼示例
- erlang cd(Dir)用法及代碼示例
- erlang cmd(Command)用法及代碼示例
- erlang crc32(Z, PrevCRC, Data)用法及代碼示例
- erlang casefold(String :: unicode:chardata())用法及代碼示例
- erlang chomp(String :: unicode:chardata())用法及代碼示例
- erlang cspan(String, Chars)用法及代碼示例
- erlang characters_to_list(Data, InEncoding)用法及代碼示例
- erlang characters_to_nfc_list(CD :: chardata())用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 connect(Socket, Addr, Port, Opts, Timeout) -> {ok, #sctp_assoc_change{state = comm_up}} | {error, #sctp_assoc_change{state = cant_assoc}} | {error, inet:posix()}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。