Jak to zrobic?
Połączyć się z każdym po kolei (jeśli jest ich mało) i sprawdzić, czy działa. A jeszcze lepiej po prostu pozwolić użytkownikowi wybrać, z kim ma się łączyć.
Nie ma czegoś takiego, jak "lista wszystkich działających serwerów". No, może na localhoście dałbyś radę to ustalić, ale tak ogólnie w sieci, to jak jest coś innego niż loopback, to wysyłasz pakiety w świat i nie wiesz, które porty na danym IP są pootwierane, dopóki ich nie sprawdzisz.
Obecnie posiadam kod, który jest statyczny i łączy się z konkretnym serwerem a chciałbym je ładować dynamicznie.
To wczytaj IP oraz port z konsoli, z linii komend, z pliku, z pola tekstowego na interfejsie użytkownika, tudzież z dowolnego innego sensownego miejsca. A jeśli jest ich wiele, to zrób sobie listę, gdzie będzie można odkliknąć dany element i nazwa wybrana przez użytkownika zostanie zamieniona na IP oraz port, z którym masz się łączyć.
Jak odpalasz przeglądarkę i wpisujesz "cpp0x.pl", to tak naprawdę łączysz się z 192.109.240.123 (w chwili pisania, bo IP z upływem czasu może się zmieniać) na porcie 443. Nawet jak wyedytujesz w systemie operacyjnym plik "hosts", to możesz sobie własną nazwę nadać, żeby nie wpisywać "127.0.0.1".
Ewentualnie jak chcesz robić jakieś skanowanie sieci, to są do tego narzędzia, takie jak "nmap". Tylko pamiętaj o tym, że jeśli będziesz pingał jakiś serwer zbyt intensywnie, to możesz zostać przyblokowany, jak będziesz leciał po kolei od portu A do portu B i sprawdzał, czy jest aktywny.
Ogólnie jest tak, że jeśli masz jakąś aplikację, to dany port jest nadawany na stałe i używany do konkretnych celów. Na przykład 443 jest do HTTPS, 80 jest do HTTP, i tak dalej. Są nawet nieoficjalne listy takich portów, używanych w różnych aplikacjach:
https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbersDopisano:Pamiętaj też o tym, że to jest świat klientów i serwerów. Czyli że serwer może działać świetnie, ale na przykład stwierdzić, że konkretnego klienta nie obsługuje. Zatem to nie jest tak, że jak sprawdzisz dany port i nie dostaniesz odpowiedzi, to że serwer "nie działa". Może równie dobrze działać i odrzucać połączenie.
Przykładowo: jest zadanie, które żeby zrobić, to musisz połączyć się z konkretnego portu, a nie z losowego:
https://www.wechall.net/challenge/training/net/ports/index.php