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