Tworzenie połączeń Peer to Peer przy użyciu serwera pośredniego
Chcę połączyć dwóch klientów (przez gniazda TCP / IP). Klienci mogą odkrywać się nawzajem za pomocą serwera pośredniego. Gdy klienci się odnajdą, nie powinno być żadnego zaangażowania serwera.
Zrobiłem trochę badań na ten temat i znalazłem wiele osób sugerującychJXTA
. Ale chciałbym sam stworzyć protokół od podstaw (ponieważ w przyszłości będę musiał go zaimplementować również za pomocą WebSockets (gdy mój klient jest przeglądarką)). Obecnie moimi klientami mogą być aplikacje Desktop lub aplikacje mobilne.
Moje pytania to:
Jak klienci odnajdą się na serwerze? Jeśli serwer wyśle do siebie globalny adres IP klientów, czy te informacje wystarczą do utworzenia połączenia peer-to-peer? Co jeśli klienci są w tej samej sieci LAN, a serwer jest w innej sieci WAN?
Klient ma dynamiczny adres IP. Czy ich IP może się zmienić nagle, nawet jeśli ma aktywne gniazdo?
Czy połączenie peer-to-peer jest niezawodne do przesyłania danych nieciągłych (np. W aplikacji czatu)?
[UWAGA: przez połączenie peer-to-peer mam na myśli ustanowienie połączenia gniazda TCP / IP klient-serwer (przy użyciu Java) przez uczynienie jednego z klientów tymczasowym gniazdem-serwerem]
Z góry dziękuję.