Прекратить копирование в p2p-сети

Я пишу простую программу передачи файлов p2p с использованием java. У меня есть несколько узлов, все знают IP друг друга. Пользователь на каждом узле может отправить запрос GET всем другим узлам в сети. Запрос на получение, за которым следует имя файла, будет доставлен на другие хосты. Затем каждый хост заглядывает внутрь своего жесткого диска, чтобы увидеть, может ли он найти файл с определенным именем. Если у него есть файл, он должен ответить запрашивающему. Но вместо этого хост, на котором есть файл, проверяет одно условие. Получал ли он раньше какой-либо файл от запрашивающего? Если да, то немедленно отправьте свой ответ запрашивающему. Но если нет, то вместо этого хост, на котором есть файл, обманывает запрашивающего. То есть делает следующее:

if prior_communications[source] is None then:
  sleep(10) send_response()
  endif

send_response()

На стороне запрашивающего, после того как он отправил запрос всем узлам в своем кластере, он запускает таймер и записывает всех тех, кто ему ответил, а также файл. По прошествии определенного жестко запрограммированного времени запрашивающая сторона проверяет свой список респондентов и выясняет, кто ответил быстрее всего? Затем он инициирует TCP-соединение с респондентом и получает файл. Моя работа - избегать такого рода советов. Есть способ? Кстати, я добавил код, чтобы любой, кто отправляет файлы нескольким запросчикам, имел ограничение на количество узлов, которые он мог отправлять им файлы одновременно. Но, к сожалению, это не может предотвратить совмещение. Спасибо.

0 ответов

Другие вопросы по тегам