Спецификация Задание: Реализовать простую пиринговую локальную сеть. Возможность передавать файлы. Язык программирования – С\С++. Кроссплатформенность: Qt + Boost.Asio Наличие GUI: Qt Designer. Основные функции программы: 1. Прямая передача файла(один к одному) 2. Торрент-подобная передача файла(много к одному либо один ко многим) 3. Поддержка torrent-файлов либо torrent-подобных файлов(с указанием передаваемого файла, его хэша и основного хоста). 4. Докачка файлов 5. Мультипоточность программы. 6. По возможности ориентироваться не на локальную сеть, а на всю интернетсеть(широковещательные UDP-запросы) 7. Определение ширины канала и возможность ограничивать раздачи по скорости. Возможные дополнительные функции программы: 1. Сбор мета-информации о файлах на каждой машине(где установлена программа). Т.е. индексирование файлов в БД со всевозможными дополнительными данными (например, для mp3 файла – продолжительность воспроизведения, качество, исполнитель, альбом, композиция и т.д.). Необходимо для п.2 2. Поиск файлов на всех машинах, на которых установлена программа. Совместно с п.1 3. Динамическое воспроизведение файлов(аудио, видео) – при наличии достаточного канала воспроизводить файл прямо в результатах поиска, либо по мере его закачки. 4. Сжатие файлов при передаче (целесообразно сжимать текстовые и бинарные файлы) 5. Шифрование файлов 6. Контакт-лист (помимо списка раздач сделать список контактов – машин, с которыми связь уже была установлена) 7. Чат (при наличии контакт-листа, п.6). Простейший, основной упор – передача файлов в нем и простые текстовые сообщения.