Компьютер — Сервер: как реализовать синхронизацию файлов?
На одной стороне создаете список пар (хеш_имени;хеш_контента) и на другой стороне такой же список пар. Которая-то из сторон отправляет свой список другой стороне. 
Получатель ищет 
а) хеши_имен, которых нет у него (и запрашивает такие файлы себе)
б) хеши_имен, которых нет у отправителя (и отправляет такие файлы ему)
в) хеши_имен, которые есть и там и тут, но не совпадают их хеши_контента (тут нужно решить у кого более свежая версия и соответственно направление обмена)
Если хеш криптостойкий, то можно еще обнаруживать факт переименования файла - хеш_контента не изменится, а хеш_имени изменится. Ну и вообще много разных вопросов в части снижения трафика между сервером и клиентом можно придумать (например, некую аналогию rsync для списка хешей).
Ну на php обычно реализовать авторизацию прием и хранение файлов.
А вот на с++ как то сканировать папку на компьютере и через http общаться с сервером.
Так как то(