Một trong những trình xử lý gen_servers trong cuộc gọi ứng dụng của tôi gen_tcp:listen(Port, [{active, true}]). Lần đầu tiên tôi chạy thử nghiệm đơn vị, nó trả về {ok, Socket}, nhưng lần thứ hai tôi chạy cùng một bài kiểm tra đơn vị, nó trả về {error, eaddrinuse}, nhưngai sử dụng cổng TCP?
lsof -i TCP
không trả về gì cả. Ngoài ra, khi cùng một đơn vị được chạy hai lần trên một máy khác (WinXP), nó hoạt động như mong đợi (nghĩa là, trả về {ok, Socket} cả hai lần). Vì vậy, gen_server của tôi rõ ràng là phát hành cổng, nhưng Erlang bằng cách nào đó không biết điều đó.
Vì vậy, làm thế nào tôi có thể tìm ra ai Erlang nghĩ sử dụng địa chỉ này?
Bạn có thể sử dụng cờ reuseaddr để gen_tcp: lắng nghe để làm cho hành vi này trên Linux đi. – Lukas