Java [1242]

Zapisz się
Dodaj kartkę Dodaj bana
Powód wlepienia kartki
Wybierz wątek docelowy z listy lub wpisz jego ID
  • kuba

    Potrzebuje napisać interfejs sieciowy do prostej gry sieciowej np. statki. Bede używał protokolu tcp.
    1-szy klient wysyla wiadomosc do serwera, a ten przekazuje go 2mu klientowi. Chciałbym uzyc do tego 3ch komputerow, czyli 2 dla klientow i 1 dla serwera. Jak rozgryzc problem, gdy serwer nie ma stalego adresu ip? Chciałbym aby klient nie musial wpisywac adresu serwera. Slyszalem ze jest cos takiego jak dyndns..ale nie wiem czy da sie to jakos wykorzystac.
    Drugim problemem jest laczenie sie do serwera w przypadku gdy jest on za adresem prywatnym, ale tutaj pozostaje chyba jedynie przekierowanie jakiegos portu.
    Moze troche zagmatwalem, ale z gory dziekuje za pomoc.
  • Michał

    Odpowiem jedynie na część tematu.
    Na co dzień pracuję z javą dlatego rozwiązanie będzie dedykowane dla tej technologii.

    Jednym z rozwiązań jest użycie apletu po stronie klienta (klientów) oraz po stronie serwera servletu (lub modułu MVC w frameworku springa).

    Piszesz sobie prosty aplet (a raczej warstwę odpowiadającą za komunikację z serwerem w tymże aplecie). Do komunikacji (wysyłanie i odbieranie danych) wykorzystujesz sobie binarną serializację.
    Po stronie serwera jest odbierana taka wiadomość oraz przechodzi przez odpowiedni mechanizm który rozpoznaje skąd przyszła wiadomość (tu możesz sobie zaprojektować mechanizm wirtualnych sesji do rozpoznawania źródła wiadomości)...

    Należy pamiętać o napisaniu prostego protokołu w który będzie odpowiednio sformatowany (by być w stanie zawrzeć w nim wszystkie potrzebne informację takie jak id wirtualnej sesji itp). Ten właśnie protokół będzie odpowiednio interpretowany po stronie serwera i klienta (tu możesz użyć albo implementacji interfejsu Map, lub zwykły String który będzie zamieniany na strumień bajtów i wysyłany)

    Jakieś pół roku temu pisałem coś w tym stylu. Działa tak jak powinno i nie ma zbytnio problemów. Jak by co to pisz na prv.

    Pozdrawiam
  • wojteks

    >kuba napisał
    >Potrzebuje napisać interfejs sieciowy do prostej gry
    >sieciowej np. statki. Bede używał protokolu tcp.
    >1-szy klient wysyla wiadomosc do serwera, a ten przekazuje
    >go 2mu klientowi. Chciałbym uzyc do tego 3ch komputerow,
    >czyli 2 dla klientow i 1 dla serwera. Jak rozgryzc problem,
    >gdy serwer nie ma stalego adresu ip? Chciałbym aby klient
    >nie musial wpisywac adresu serwera. Slyszalem ze jest cos
    >takiego jak dyndns..ale nie wiem czy da sie to jakos
    >wykorzystac.
    >Drugim problemem jest laczenie sie do serwera w przypadku
    >gdy jest on za adresem prywatnym, ale tutaj pozostaje chyba
    >jedynie przekierowanie jakiegos portu.
    >Moze troche zagmatwalem, ale z gory dziekuje za pomoc.
    >

    Dyndns zalatwia Ci temat - wpisz sobie w google, sa darmowi providerzy.

    A jesli chodzi o laczenie sie za prywatnym adresem to faktycznie przekierowanie portu czy jakies cuda p2p (moze jxta?). Nie znam detali bo tego nigdy nie robilem ale obczaisz to przyjdz sie podzielic z nami :)
  • Lilianne E. Blaze

    >kuba napisał
    >nie musial wpisywac adresu serwera. Slyszalem ze jest cos
    >takiego jak dyndns..ale nie wiem czy da sie to jakos
    >wykorzystac.

    Da sie.

    Google "free dynamic dns" czy cos podobnego.

    Jak chcesz cos konkretnego - no-ip.com wyglada na to ze ma proste api ktore mozesz bardzo latwo wykorzystac ze swojego kodu http://www.no-ip.com/integrate/requ...

    >Drugim problemem jest laczenie sie do serwera w przypadku
    >gdy jest on za adresem prywatnym, ale tutaj pozostaje chyba
    >jedynie przekierowanie jakiegos portu.

    To juz kwestia konfiguracji sieci, nic specyficznego dla Javy.
  • kuba

    Witam, mialem krotka przerwe.
    Zdecydowałem wykumic domene i umiescic gre na serwerze. Usluga ktora swiadczy np dyndns.com rozwiazuje problem zmiennego adresu ip, ale nie natowania i ewentualnej zapory sieciowej za ktorym mogłby znalezc sie serwer. W tej sytuacji jedynym rozwiazaniem na polaczenie sie z serwerem byloby przekierowanie min 1go portu co dla niedoswiadczonego uzytkownika mogloby byc problemem.
    Dziekuje za pomoc
  • wojteks

    ano, jak zwykle najprostsze rozwiazanie jest najlepsze :)