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ę.

questionAnswers(1)

yourAnswerToTheQuestion