term |
Отправлено: 29.08.2004, 20:07 |
|
Не зарегистрирован
|
В локальной сети есть 6 компьютеров. На каждом компе мое приложение. Ему требуется вести log, т.е. модифицировать файл на сервере.(На серваке файл каждая программа при определенном действии пользователя открывает/закрывает/читает/пишет этот файл)
Проблемы следующие:
1 Как указать путь к этому .txt файлу с компьютера-клиента?
2 Не могу испробвать на пратике(пишу дома), что будет, если две программы одновременно попытаются открыть файл? (Если все повиснет — как с этим бороться?)
|
|
Konstantine |
Отправлено: 30.08.2004, 08:41 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
Лучше сделай клиент-серверное приложение. Этим ТЫ избавишься сразу от кучи багов, которые проявятся и не нада будет расшаривать директорию с логом.
|
|
AVC |
Отправлено: 30.08.2004, 08:46 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
1. Так же, как если бы вам было нужно открыть его блокнотом на стороне клента.
2. Второе приложение получит код ошибки.
По моему мнению лучше сделать сервер и посылать ему команды, например то TCP. |
|
AVC |
Отправлено: 30.08.2004, 08:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Малость опоздал. |
|
Konstantine |
Отправлено: 30.08.2004, 08:51 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
:-)
|
|
term |
Отправлено: 09.09.2004, 17:43 |
|
Не зарегистрирован
|
уточните как указать путь, нечто вроде
192.0.0.1\D:\Temp\temp.txt где 192.0.0.1 — IP адрес сервака ?
если файл уже открыт, и его пытаются открыть еще раз, то fopen() вернет NULL, а что будет если ОДНОВРЕМЕННО две программы попытаются открыть файл, вернется ли NULL?
плиз поясните функцию fsopen(), что значит "открывает файл совместного доступа"?
|
|
Konstantine |
Отправлено: 10.09.2004, 08:00 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
Нет!!!
На сервере вешаешь прогу, которая объявляет серверный сокет (ServerSocket) и принимает данные от подлюченых клиентов. Если нада — записывай в файл.
На клиенте прога должна НЕ модифицировать файл на сервере, а подключится к ServerSocket (с пом. ClientSocket) и передать ему то, что нада вписАть в файл.
Две программы не могут ОДНОВРЕМЕННО открыть файл.
Что касается записи на сервере, то если у тебя текстовая информация, то Я рекомендую пользоваться TStringList: при считывании StringList1->LoadFromFile("file_name") а при записи — StringList1->SaveToFile("file_name"). только не забудь прои указании пути к файлу делать \ двойным.
|
|
Guest |
Отправлено: 10.09.2004, 09:20 |
|
Не зарегистрирован
|
QUOTE (Konstantine @ писал) | Две программы не могут ОДНОВРЕМЕННО открыть файл |
Запросто.
(Но не во всех случаях) |
|
Konstantine |
Отправлено: 10.09.2004, 09:38 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
ОДНОВРЕМЕННО дать OPEN??? чтоб обоим дало false??? разве что уже до этого этот файл открыла третья прога!!!
|
|