class Makit::Port


This class provide methods for working with ports

def self.get_available_port(start_port = 1024, end_port = 65535)

def self.get_available_port(start_port = 1024, end_port = 65535)
    (start_port..end_port).each do |port|
        return port if is_port_available?(port)
    end
    nil # No available port found in the range
end

def self.get_random_available_port

def self.get_random_available_port
    get_available_port(get_random_port)
end

def self.get_random_port

def self.get_random_port
    rand(1024..65535)
end

def self.is_port_available?(port)

def self.is_port_available?(port)
    begin
        socket = Socket.new(:INET, :STREAM)
        socket.bind(Socket.sockaddr_in(port, ''))
        socket.close
        return true # Port is available for use
    rescue Errno::EADDRINUSE, Errno::EACCES
        return false # Port is not available for use
    end
end