我如何知道socket是否打开?
答案 0 :(得分:10)
使用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的方式。最好让你的代码假设套接字是打开的,如果它因为尝试使用已经关闭的套接字而遇到错误,那就让它崩溃,让其他像管理员一样处理错误。
答案 1 :(得分:3)
当您的应用达到您想要了解的位置时,在终端中尝试此操作
inet:i()
答案 2 :(得分:0)
你在说什么样的插座?我的猜测是,如果套接字没有打开,大多数套接字函数都会返回一个错误元组。