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


erlang connect(Address, Port, Opts)用法及代码示例


connect(Address, Port, Opts) -> {ok, Socket} | {error, Reason}
connect(Address, Port, Opts, Timeout) ->
           {ok, Socket} | {error, Reason}
类型:
Address = inet:socket_address() | inet:hostname()
Port = inet:port_number()
Opts = [inet:inet_backend() | connect_option()]
Timeout = timeout()
Socket = socket()
Reason = timeout | inet:posix()

连接到 IP 地址为 Address 的主机上 TCP 端口 Port 上的服务器。参数 Address 可以是主机名或 IP 地址。

可以使用以下选项:


{ip, Address}

如果主机有多个网络接口,则此选项指定使用哪一个。


{ifaddr, Address}

{ip, Address} 相同。如果主机有多个网络接口,则此选项指定使用哪一个。

但是,如果这是一个 socket:sockaddr_in()或者 socket:sockaddr_in6()这优先于之前用ipport选项。如果这些选项(ip或/和port)然而来了这个选项,他们可能会用来更新该选项的相应字段(例如ip, 这addr场,并且对于port, 这port场地)。


{fd, integer() >= 0}

如果在未使用 gen_tcp 的情况下以某种方式连接了套接字,请使用此选项为其传递文件说明符。如果{ip, Address} 和/或{port, port_number()} 与此选项结合使用,则在连接之前将fd 绑定到指定的接口和端口。如果未指定这些选项,则假定 fd 已正确绑定。


inet

设置 IPv4 的套接字。


inet6

设置 IPv6 的套接字。


local

设置 Unix 域套接字。看 inet:local_address()


{port, Port}

指定要使用的本地端口号。


{tcp_module, module()}

覆盖使用哪个回调模块。对于 IPv4,默认为 inet_tcp;对于 IPv6,默认为 inet6_tcp


Opt

参看setopts(Socket, Options).

数据包可以发送到返回的套接字Socket使用send/2。从对等方发送的数据包作为消息传递:

{tcp, Socket, Data}

如果插座位于{active, N}模式(参见setopts(Socket, Options)有关详细信息),其消息计数器下降到0,传递以下消息以指示套接字已转换为被动状态({active, false}) 模式:

{tcp_passive, Socket}

如果套接字关闭,则会传递以下消息:

{tcp_closed, Socket}

如果套接字上发生错误,则会传递以下消息(除非{active, false}在套接字的选项列表中指定,在这种情况下,通过调用检索数据包recv/2):

{tcp_error, Socket, Reason}

可选的Timeout 参数指定time-out(以毫秒为单位)。默认为 infinity

注意

请记住,如果底层操作系统 connect() 调用返回超时,则 gen_tcp:connect 也将返回超时(即 {error, etimedout} ),即使指定了更大的 Timeout 也是如此。

注意

指定选项的默认值connect可以受内核配置参数的影响inet_default_connect_options。详细信息请参见inet(3).

相关用法


注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 connect(Address, Port, Opts) -> {ok, Socket} | {error, Reason}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。