【发布时间】:2011-12-30 13:23:34
【问题描述】:
我的应用程序中的一个 gen_servers 调用 gen_tcp:listen(Port, [{active, true}])。第一次运行单元测试时,它返回 {ok, Socket},但第二次运行相同的单元测试时,它返回 {error, eaddrinuse},但是
lsof -i TCP
什么都不返回。此外,当相同的 unit_test 在另一台机器 (WinXP) 上运行两次时,它会按预期工作(即,两次都返回 {ok, Socket})。因此,我的 gen_server 显然释放了端口,但 Erlang 不知何故不知道。
那么,我怎样才能知道 Erlang 认为谁使用了这个地址呢?
【问题讨论】:
-
您可以对 gen_tcp:listen 使用 reuseaddr 标志来消除 Linux 上的这种行为。