Ste*_*ski 11
使用erlang:port_info/1.undefined如果套接字关闭,它将返回.例如:
Eshell V5.8.3 (abort with ^G)
1> {ok,S} = gen_tcp:connect("localhost", 8000, [binary,{active,false}]).
{ok,#Port}
2> erlang:port_info(S).
[{name,"tcp_inet"},
{links,[]},
{id,634},
{connected,},
{input,0},
{output,0}]
3> gen_tcp:close(S).
ok
4> erlang:port_info(S).
undefined
但是要小心使用它来进行防御性编程,因为这不是Erlang的方式.最好让你的代码假设套接字是打开的,如果它因为尝试使用已经关闭的套接字而遇到错误,那就让它崩溃,让其他像管理程序一样处理错误.