Próbowałem utworzyć program do czatu z java. Udaje mi się, gdy używam ip 127.0.0.1, aby się połączyć.
Socket socket = new Socket ("127.0.0.1", 5005);
wszystko działało świetnie na moim komputerze, a program działał nawet, gdy próbuję połączyć się z moim comupter i moim leptopem, który używa tego samego routera. (zrobiłem to używając lokalnego IP) Następnie chciałem połączyć komputery, które używają innych routerów, używając zewnętrznego IP. więc czytam w sieci i rozumiem, że muszę przekazać mój port przez router. Mam router Siemens ADSL Sl2-141. Zamieniam port 5005, a mój program czatu nadal nie działa. Dostaję połączenie Odrzucony błąd w kółko. czy coś przegapiłem?
Odpowiedzi:
Po pierwsze, wydaje się, że konfigurujesz swój kod, aby nasłuchiwał tylko na adres localhost, a nie na adres zewnętrzny. Użyj zamiast tego połączenia z gniazdem: (zgodnie z ten przewodnik )
EDYCJA (Zmieniono zgodnie z omówieniem komentarza poniżej):
Gdzie
PUBLIC_IP_ADDR
Twój adres internetowy, który możesz zlokalizować tutajJeśli nadal nie możesz uzyskać połączenia sprawdź, czy program jest dostępny i nasłuchuje ...
Przewodnik sprawdzania portu
1) Jeśli jeszcze tego nie zrobiłeś, przejdź ten przewodnik i potwierdź, że wykonałeś wszystkie kroki.
2) Użyj to narzędzie aby potwierdzić, że twój port jest rzeczywiście otwarty.
Jeśli # 2 nie powiedzie się, twój port nie jest faktycznie otwarty. Czy komputer, który akceptuje połączenie, aktywnie nasłuchuje na 5005?
Windows:
Linux:
Jeśli obok niego nie ma „LISTENING”, aplikacja nie nasłuchuje połączeń. Ale nie podejrzewam, że to jest problem, ponieważ możesz to zrobić na localhost.
Jeśli to się nie powiedzie, potwierdź, że zapora systemu operacyjnego jest otwarta.
To wszystko, o czym mogę teraz pomyśleć
źródło
0.0.0.0
Po prostu oznacza słuchanie na wszystkich IP (wierzę). Jeśli masz plik klienta próbujący uzyskać dostęp do usługi na porcie 5005127.0.0.1
spróbuje znaleźć twój serwer na tym samym komputerze, z którego się łączysz. Zmień to na swój publiczny adres IP. Zaktualizuję odpowiedź ze szczegółami.Co powiedział @Brian. Twój adres wewnętrzny jest prawdopodobnie błędny, jeśli program nie działa. Spróbuj zastąpić „127.0.0.1” wewnętrznym („10. niezależnie”) adresem i następnie uruchom go z tego samego komputera. Jeśli to zadziała, tylko wtedy spróbuj z innego komputera. Jeśli jest zablokowany z innego komputera w tej samej podsieci, prawdopodobnie masz zaporę programową („Windows Defender” lub niektóre takie), która blokuje połączenia zewnętrzne.
Problem z zakresem nadal pozostaje: jeśli potrzebujesz pomocy przy konfigurowaniu routera, Google, a następnie superuser.com to miejsca, w których możesz zapytać. Jeśli potrzebujesz pomocy w programowaniu, do tego służy ta strona.
źródło