當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang connect(Socket, Addr, Port, Opts, Timeout)用法及代碼示例


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()

為套接字 SocketAddrPort 指定的對等方(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_streamsinbound_streams是套接字上的流編號。如果對等方需要較低的值,則這些值可能與請求的值(分別為 OutStreamsMaxInStreams )不同。

state 可以具有以下值:


comm_up

協會成立成功。這表明 connect 成功完成。


cant_assoc

無法建立關聯(connect/* 失敗)。

其他狀態通常不會出現在輸出中connect/*。相反,它們可以發生在#sctp_assoc_change{}收到的事件而不是數據recv/*調用。所有這些都表明由於各種錯誤情況而失去關聯,為了完整起見,在此列出:


comm_lost

restart

shutdown_comp

場地error可以提供更詳細的診斷。這error字段值可以使用以下方式轉換為字符串error_string/1.

相關用法


注:本文由純淨天空篩選整理自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()}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。