przekierowanie portów, aby utworzyć serwer na moim komputerze


0

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? Siemens port forwading


podwójnie sprawdź adres IP wewnętrznego hosta. Czy próbowałeś zarówno laptopa, jak i komputera stacjonarnego jako celu ?. Czy korzystasz z dalszych (oprogramowania) zapór ogniowych?
yankee

UWAGA: Mimo że to pytanie zostało przeniesione, nie wydaje mi się jasne, czy jest to problem z konfiguracją sieci, czy problem z kodem (słuchacz / połączenie przechodzące przez poprawne adresy IP). Dopóki nie zdobędziemy więcej informacji, może to być przypadek pospiesznej moderacji.
Grambot

Odpowiedzi:


1

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):

Socket socket = new Socket("PUBLIC_IP_ADDR",5005);

Gdzie PUBLIC_IP_ADDR Twój adres internetowy, który możesz zlokalizować tutaj

Jeś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:

Start -> Run -> cmd
  netstat -an | find /i "5005"

Linux:

(From terminal)
  netstat -l | grep 5005

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ć


powyższy kod dotyczy pliku klienta. na serwerze użyłem kodu, który podałeś. Narzędzie, które dałeś, daje mi pozytywną odpowiedź: Sukces: Widzę twoją usługę w 77.126.189.65 na porcie (5005) Twój dostawca usług internetowych nie blokuje portu 5005. to była część odpowiedzi: TCP 0.0.0.0:5005 0.0.0.0.0 SŁUCHANIE 0.0.0.0.0 mybe znaczy coś?

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 5005 127.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.
Grambot

Przepraszam, czy masz na myśli, że udało ci się połączyć? Czy nadal nie możesz? EDYCJA: Ponadto, ponieważ publicznie otwierasz usługę, zasugerowałbym ukrycie IP na razie w przypadku, gdy anonimowi ludzie natkną się na tę stronę i zaczną próbować się z tobą połączyć.
Grambot

mogę się połączyć, gdy używam 127.0.0.1. Nie mogę się połączyć, gdy używam mojego zewnętrznego IP do połączenia

Czy możesz edytować swoje pytanie tak, aby zawierało kod, na którym ustawiłeś nasłuchiwanie gniazd?
Grambot

0

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.


Udało mi się uruchomić program za pomocą wewnętrznego IP (10.0.0.3 zamiast 127.0.0.1). teraz próbuję uruchomić program za pomocą zewnętrznego IP
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.