Если каждый элемент имеет номер в конце
list.sort_by { |item| item.scan(/\d*$/).first.to_i }
соответствует этому номеру в конце, возьмите первый (потому что сканирование дает массив результатов), преобразуйте его в целое число [114 ]
проще
list.sort_by { |item| item[/\d*$/].to_i }
[]
уже занимает первое совпадение
Эта статья Brian Ford объясняет, как одноранговая связь через NATs работает.
Большинство маршрутизаторов также выставляет интерфейс Universal Plug and Play (uPnP), который может использоваться для обхода NAT и перенаправления портов.
Необходимо также проверить библиотеку STUNT, которая является простой в использовании библиотекой обхода NAT.
Можно хотеть читать на Обходе NAT. Обход NAT является общим термином для методов, которые устанавливают и поддерживают сетевые соединения TCP/IP, пересекающие шлюзы преобразования сетевых адресов (NAT).