Как писать в один файл?

Тема в разделе "WASM.NETWORKS", создана пользователем Android, 30 сен 2005.

  1. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Кто нибудь подскажет как можно реализовать запись в один файл, удаленный естественно. (FTP, http...)
     
  2. Loger

    Loger New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2003
    Сообщения:
    71
    Адрес:
    Minsk
    WinInet Function -> FtpPutFile/InternetWriteFile
     
  3. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Мне надо что бы данные писались в один файл по фтп протоколу. Одновременно несколько приложений могут попытаться сделать запись, мне надо синхронизировать этот процесс, вининет гарантирует что к файлу имеет доступ только одно приложение?
     
  4. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    А обязательно фтп? Почему не использовать обычные сокеты?

    Сервер будет принимать запросы от клиентов и писать

    в файл. Там же и синхронизация.

    Или я задачу не понял?



    Если надо, могу привести код закачки файла по WinSock.
     
  5. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Я не могу на хосте устанавливать свой софт. Надо либо по фтп протоколу либо по шттп. По какому-нибудь стандартному.
     
  6. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    а если расшарить папку с файлом на сервере и с клиентов

    открывать файл в этой папке и добавлять инфу..

    Только с синхронихацией гемор
     
  7. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Я думал так: перед записью в файл клиент пишет в первые 8байт текущее время(т.е. файл занят), затем пишет данные, после окончания записи затирает эти 8байт нулями, т.е. файл не кем не занят. Если его выкинит, то по времени можно определить, сколко времения назад был занят файл, если например больше 10мин, то считаем, что он свободен

    ???
     
  8. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    Проще на мой взгляд реализовать следующую схему:

    на сервере скрипт (perl, PHP), к которому обращаются клиенты по HTTP. Клиент отправляет запрос скрипту на запись, скрипт либо записывает данные в файл (если файл свободен), либо сообщает клиенту, что тот должен попытаться позже или можно организовать очередь ожидания.
     
  9. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    Android

    Я реализовывал примерно такой же алгоритм синхронизации

    доступа к буферу в памяти. Только у меня был 1-й

    байт 0 или 1. Если 1- то файл занят.
     
  10. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    perez

    Что будет если клиент "открывает" файл

    ставит первый байт в 1, а потом происходит дисконнект? Файл так и останется в занятом состоянии(для этого я пишу последнее время доступа, что-бы если, например, с тех пор прошло 20мин, следующий клиент считал этот файл свободным). Или все изменения не вступят в силу?
     
  11. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    perez

    Что будет если клиент "открывает" файл

    ставит первый байт в 1, а потом происходит дисконнект? Файл так и останется в занятом состоянии(для этого я пишу последнее время доступа, что-бы если, например, с тех пор прошло 20мин, следующий клиент считал этот файл свободным). Или все изменения не вступят в силу?
     
  12. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    pas

    А по скорости какой протокол быстрее? Или существенной разницы нет?