Я пока не уверен, возможно ли это, и я ищу, где можно найти больше информации. В основном это делается как упражнение, но я хочу посмотреть, смогу ли я вообще реализовать это как решение для совместного использования очень больших файлов с минимальными хлопотами между двумя людьми (и я понимаю, что могут существовать некоторые решения, которые похожи, но я все еще хочу попробовать и написать один).
Основные настройки следующие:
Я рассчитываю на настройку сервера с программой, которая прослушивает порт XYZ. У меня было бы два примера пользователей (A и B). Пользователь "A" хочет поделиться файлом с пользователем "B". «А» идет к своему локальному клиенту и отправляет некоторую информацию на сервер. Он возвращает ключ, который он может отправить пользователю "B", как ему нравится (вместо публикации или трансляции местоположения). Пользователь «Б» получает ключ, кладет его в своего клиента. Его клиент идет на сервер и получает информацию о том, как подключиться к компьютеру пользователя «А» для передачи файла.
Теперь, это достаточно просто для машин, которые могут подключаться через сокет напрямую, но я предполагаю, что пользователи A и B находятся в совершенно разных сетях, за разными публичными IP-адресами (обычные интернет-пользователи). Итак, что меня удивило, могу ли я, чтобы пользователь «A» и пользователь «B» отслеживали состояние на сервере, и когда стало очевидно, что пришло время поделиться файлом, используйте сервер в качестве моста, чтобы каким-то образом соединить их… передать рукопожатие и затем либо новый сокет, либо как-то соединить сокеты, подключенные к серверу? Предостережение во всем этом состоит в том, что я бы хотел, чтобы полоса пропускания не передавалась по серверу (или я мог бы просто инициировать прямые подключения к серверу), а напрямую взаимодействовала между двумя компьютерами, используя сервер только для согласования. соединение.
Но я понятия не имею, где искать информацию об этом, или, если это возможно:)
Я предпочитаю использовать Java.