我怎么知道erlang是否打开套接字?
最佳答案
使用erlang:port_info/1。如果套接字已关闭,则返回undefined
。例如:
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方式。最好让您的代码假定套接字是打开的,并且如果由于尝试使用已经关闭的套接字而遇到错误,请使其崩溃并让其他类似主管的错误处理。
关于sockets - 二郎打开 socket 还是知道的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715657/