inet_free_port
A lightweight Erlang/OTP library for finding free TCP and UDP ports within a specified range.
The library runs as an OTP application with a supervisor and one or more gen_server workers, each responsible for managing port allocation.
Installation
The package can be installed by adding inet_free_port to your list of dependencies
in
rebar.config:
{deps, [inet_free_port]}.Features
- Find free TCP and UDP ports
- Configurable port ranges per worker
- OTP-compliant (application, supervisor, gen_server)
- Supports multiple independent port
- Sequential port allocation
- Lightweight and dependency-free
Basic usage
Start application
application:start(inet_free_port).
At startup, create workers under the supervisor from config/sys.config
The library uses application environment variables to define port.
Example (config/sys.config):
[
{inet_free_port, [
{free_port_server1, [
{tcp, {30000, 31000}},
{udp, {31000, 32000}}
]}
]}
].
Each entry creates a separate worker(inet_free_port) under the supervisor(inet_free_port_sup).
Start worker
StartPort = 1000,
EndPort = 2000,
{ok, _Pid} = inet_free_port:start_link(free_port_server1, [
{tcp, {StartPort, EndPort}},
{udp, {StartPort, EndPort}}
]).Get a free TCP port
{ok, TcpPort} = inet_free_port:get_port(free_port_server1, tcp).Get a free UDP port
{ok, UdpPort} = inet_free_port:get_port(free_port_server1, udp).Default (TCP)
{ok, TcpPort} = inet_free_port:get_port(free_port_server1).With timeout
{ok, TcpPort} = inet_free_port:get_port(free_port_server1, tcp, 2000).