Создание одноранговых соединений с использованием промежуточного сервера

Я хочу соединить двух клиентов (через сокеты TCP / IP). Клиенты могут обнаруживать друг друга, используя промежуточный сервер. Как только клиенты обнаруживают друг друга, не должно быть никакого участия сервера.

Я провел некоторое исследование по этому поводу и нашел много людей, предлагающихJXTA, Но я бы хотел сам создать протокол с нуля (потому что в будущем мне, возможно, придется реализовать то же самое с помощью WebSockets (когда мой клиент - браузер)). В настоящее время моими клиентами могут быть настольные или мобильные приложения.

Мои вопросы:

How will clients discover each other at the server? If the server sends the global IP address of the clients to each other, will that information be enough to create a peer-to-peer connection? What if the clients are on the same LAN network and the server is on a different WAN?

Client have dynamic IP address. Can their IP change all of a sudden even if it has an active socket?

Is peer-to-peer connection is reliable for transfer of non-continuous data (like in chat application)?

[ПРИМЕЧАНИЕ: под одноранговым соединением я имею в виду установление соединения сокета TCP / IP клиент-сервер (с использованием Java), сделав один из клиентов временным сокет-сервером]

Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос