我的应用程序中的gen_servers之一调用gen_tcp:listen(Port, [{active, true}])。我第一次运行单元测试,它返回{OK,插座},但我跑得同样的单元测试第二次,它返回一个错误{,EADDRINUSE},但谁使用TCP端口?
lsof -i TCP
回报什么。另外,当相同的unit_test在另一台机器(WinXP)上运行两次时,它按预期工作(即返回{ok,Socket}两次)。因此,我的gen_server显然释放了这个端口,但是Erlang不知道那个。
那么,我怎样才能弄清Erlang认为谁使用这个地址?
可以使用reuseaddr标志来调用gen_tcp:听就Linux的这种行为消失。 – Lukas