当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


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()}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。