Jeśli program działa na komputerze z systemem Linux, czy istnieje sposób, aby ten program skanował porty dozwolone przez zaporę ogniową? na przykład, jeśli programista chce stworzyć system czatu, ale program musi wiedzieć, jakich portów nie odmawia dostęp do połączeń przychodzących przez zaporę użytkownika, czy istnieje sposób sprawdzenia tego w swoim kodzie? Program może nie łączyć gniazda z portem, nawet jeśli zapora blokuje ten sam port przed połączeniami przychodzącymi. Czy istnieje sposób sprawdzenia otwartych portów zapory ogniowej?Dostęp do portu TCP i C++
Sidenote: Jest to wyłącznie do celów edukacyjnych i wolne od złych intencji, aby było jasne, piszę system czatu, a podczas testów nie byłem w stanie podłączyć komputera stacjonarnego-> laptopa, dopóki nie otworzyłem portu ręcznie, zezwalając przez moją zaporę ogniową. Wydawało mi się to trochę dziwne, w przeciwieństwie do czegoś, co kod programisty powinien wymagać od użytkownika. Nie wspominając już o tym, że nie chcę zostawiać tych kilku osób zagrożonych (jeśli opuszczenie portu na stałe otwiera się). Wygląda więc na to, że lepiej będzie znaleźć sposób na wykorzystanie portów, które są już otwarte na przychodzące połączenia TCP.
sidesidenote: wszyscy klienci są uruchomione fedora
Sprawdź [UPnP] (http://en.wikipedia.org/wiki/Universal_Plug_and_Play). –
Wybierz port o wysokim numerze i wykonaj port w inny sposób. Zapory ogniowe nie powinny blokować danych powyżej 32000. Oparta na UDP metoda łączenia z typowym portem (np. 1900) wykorzystywana przez inne usługi pozwala na ładowanie znanego portu, który prawdopodobnie będzie otwarty, w celu zapewnienia wykrywania dla dynamicznego portu używanego do TCP. –
Nie sądzę, że można to zrobić niezawodnie tylko na samym serwerze. Bez użycia jakiegoś zdalnego serwera proxy, serwer nie może przetestować połączenia za pomocą zapory ogniowej. – Barmar