问题描述
|
我怎么知道用erlang打开套接字还是不打开?
解决方法
使用erlang:port_info / 1。如果插座关闭,它将返回“ 0”。例如:
Eshell V5.8.3(用^ G中止)
1> {ok,S} = gen_tcp:connect(\“ localhost \”,8000,[binary,{active,false}])。
{ok,#Port}
2> erlang:port_info(S)。
[{name,\“ tcp_inet \”},
{链接,[]},
{id,634},
{连接的,},
{input,0},
{output,0}]
3> gen_tcp:close(S)。
好
4> erlang:port_info(S)。
未定义
但是请谨慎使用此代码进行防御性编程,因为这不是Erlang方式。最好让您的代码假定套接字是打开的,并且如果由于尝试使用已经关闭的套接字而遇到错误,请使其崩溃并让其他类似主管的错误处理。,当您的应用达到您想知道的程度时,请在终端中尝试此操作
inet:i(),您在说哪种插座?我的猜测是,如果套接字未打开,大多数套接字函数将返回一个错误元组。