Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

c++ - Klient serwer bez publicznego ip Winsock c++

marcino1004 01 Maj 2013 21:08 2337 11
  • #1 01 Maj 2013 21:08
    marcino1004
    Poziom 9  

    Witam mam pytanie czy da się w jakiś sposób zrealizować połączenie klient serwer przy użyciu biblioteki Winsock nie posiadając publicznego Ip?? Jeśli tak to w jaki sposób??

    0 11
  • #2 01 Maj 2013 23:57
    lukashb
    Poziom 39  

    Jak nie publiczne, to raczej tylko jako klient. Wtedy się podłączy do serwera posiadającego publiczne - stałe - routowalne IP. Inaczej mówiąc widoczne z zewnątrz. Tego typu połączenie można spotkać w GSM. Serwer stoi na PC z łączem publicznym, a klient jest z niepublicznym zmiennym co sesję adresem IP. Wszystko działa ok. Raczej język niema tu nic do rzeczy :). Popróbuj na czymś prostszym na razie, a potem wyjdź na świat. Prostsze oznacza 2 komputery podłączone do routera - masz pole do działania wtedy.

    0
  • #4 04 Maj 2013 17:06
    marcino1004
    Poziom 9  

    Chodzi o to, że po lan-ie już próbowałem i wszystko śmiga. Chodzi o to że muszę zrobić aplikację klient-serwer która działa bez publicznego IP w sieci. Możesz coś więcej powiedzieć o tym tunelu??

    0
  • #5 04 Maj 2013 17:37
    Dżyszla
    Poziom 42  

    Po LANie będzie działać, bo nie dokonuje się translacja adresów. Barierą jest tutaj NAT.

    W przypadku tunelowania przez SSH, można to łatwo zrobić w puttym:
    http://www.drzewo-wiedzy.pl/?page=artykul&id=195
    http://komputerowypoznan.pl/index.php/zdalne-zarzadzanie/40-putty-tunelowanie-portow.html

    Ogólnie o tunelu:
    http://pl.wikipedia.org/wiki/Tunel_%28informatyka%29

    0
  • #6 05 Maj 2013 21:22
    marcino1004
    Poziom 9  

    Doczytałem że da się to zrealizować przy pomocy serwera DDNS i bardziej o coś takiego mi chodziło.

    0
  • #9 06 Maj 2013 20:42
    e7th04sh
    Poziom 2  

    Nie możesz zrobić aplikacji serwerowej, która po prostu działa bez publicznego IP. Zastanów się - jakiego adresu miałby użyć klient przy łączeniu się z serwerem?

    Możesz mieć wyjątek, o którym pisali koledzy wyżej, czyli tunelowanie, port forwarding, cokolwiek.

    Albo możesz mieć aplikację-wydmuszkę, która działa na komputerze z zewnętrznym ip, przyjmuje połączenie od faktycznego serwera schowanego za natem, przyjmuje połaczenia od faktycznych klientów i przekazuje je sobie wzajemnie.

    Ale coś mi mówi, że nie o to chodzi.

    0
  • #10 10 Maj 2013 18:55
    marcino1004
    Poziom 9  

    Może wytłumaczę bo troszkę namieszałem. Chodziło mi o postawienie serwera na kompie który jest za routerem. Router ma publiczne ale dynamiczne IP. Ten problem załatwi DDNS. Resztę załatwi przekierowywanie portów. Jeśli się mylę to niech ktoś mnie poprawi.

    0
  • #11 10 Maj 2013 19:58
    Dżyszla
    Poziom 42  

    Tak, w takim przypadku z jednej strony musisz zarejestrować domenę na adres dynamiczny - tutaj DDNS jest rozwiązaniem. Ponadto na routerze musisz ustawić np przekierowanie portów na serwer - to kwestia przeniesienia ruchu przez NAT.

    0
  • #12 17 Maj 2013 20:30
    marcino1004
    Poziom 9  

    Sytuacja wygląda tak że stworzyłem i skonfigurowałem DDNS-a, ustawiłem przekierowywanie portów po stronie serwera z przychodzącego 10000 na 10000 w moim laptopie protokół TCP. Niestety nie udało nam się uzyskać połączenia. Dodam że klient też jest za routerem ale to chyba nie ma znaczenia większego. Próbowałem wpisywać nawet z ręki IP mojego routera do klienta ale to nic nie daje. Co może być przyczyną??

    Dodano po 1 [godziny] 18 [minuty]:

    Problem rozwiązany. Źle ustawiłem porty ustawiłem źródłowy na 10000 docelowy 10000 i jeszcze przekierowanie na 10000. Żeby działało wystarczy źródłowy ustawić na dowolny, docelowy na 10000 i źródłowy na 10000 lub ustawić żeby przekazywał na te same porty.

    0