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


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}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。