Мне надо что бы данные писались в один файл по фтп протоколу. Одновременно несколько приложений могут попытаться сделать запись, мне надо синхронизировать этот процесс, вининет гарантирует что к файлу имеет доступ только одно приложение?
А обязательно фтп? Почему не использовать обычные сокеты? Сервер будет принимать запросы от клиентов и писать в файл. Там же и синхронизация. Или я задачу не понял? Если надо, могу привести код закачки файла по WinSock.
Я не могу на хосте устанавливать свой софт. Надо либо по фтп протоколу либо по шттп. По какому-нибудь стандартному.
а если расшарить папку с файлом на сервере и с клиентов открывать файл в этой папке и добавлять инфу.. Только с синхронихацией гемор
Я думал так: перед записью в файл клиент пишет в первые 8байт текущее время(т.е. файл занят), затем пишет данные, после окончания записи затирает эти 8байт нулями, т.е. файл не кем не занят. Если его выкинит, то по времени можно определить, сколко времения назад был занят файл, если например больше 10мин, то считаем, что он свободен ???
Проще на мой взгляд реализовать следующую схему: на сервере скрипт (perl, PHP), к которому обращаются клиенты по HTTP. Клиент отправляет запрос скрипту на запись, скрипт либо записывает данные в файл (если файл свободен), либо сообщает клиенту, что тот должен попытаться позже или можно организовать очередь ожидания.
Android Я реализовывал примерно такой же алгоритм синхронизации доступа к буферу в памяти. Только у меня был 1-й байт 0 или 1. Если 1- то файл занят.
perez Что будет если клиент "открывает" файл ставит первый байт в 1, а потом происходит дисконнект? Файл так и останется в занятом состоянии(для этого я пишу последнее время доступа, что-бы если, например, с тех пор прошло 20мин, следующий клиент считал этот файл свободным). Или все изменения не вступят в силу?
perez Что будет если клиент "открывает" файл ставит первый байт в 1, а потом происходит дисконнект? Файл так и останется в занятом состоянии(для этого я пишу последнее время доступа, что-бы если, например, с тех пор прошло 20мин, следующий клиент считал этот файл свободным). Или все изменения не вступят в силу?