Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизСинхронизация массивов Найти похожие ветки
← →
Влад (2004-09-25 09:17) [0]Помогите начинающему программисту!
Я программированием занимаюсь около двух месяцев, и зашел в тупик на простой задачке.
На нескольких компьютерах должен быть один и тот же массив данных, и при изменении этого массива на одном компьютере, на всех остальных он тоже должен измениться. (массив не больше 50Mb)
Помогите советом, как такое сделать с учетом того, что в системе есть выделенный сервер?
Спасибо за помощь!
← →
Palladin © (2004-09-25 09:22) [1]Ну и чем тебе помось? Сколько за помощь заплатишь?
← →
Влад (2004-09-25 09:27) [2]> Ну и чем тебе помочь?
ну хотя бы алгоритмом в общих чертах...
> Сколько за помощь заплатишь?
а сколько такая помощь стоит?
← →
TUser © (2004-09-25 09:27) [3]
> На нескольких компьютерах должен быть один и тот же массив
> данных, и при изменении этого массива на одном компьютере,
> на всех остальных он тоже должен измениться. (массив не
> больше 50Mb)
1 сервер с массивом. И клиенты.
← →
Palladin © (2004-09-25 09:31) [4]Если алгоритмом, то бесплатно...
На клиентах ничего не хранится, идут запросы к серверу, как на получение данных так и на обновление...
← →
Влад (2004-09-25 09:32) [5]> 1 сервер с массивом. И клиенты.
возможно, я неверно выразился, на каждом компьютере свой массив, а содержимое всех массивов одинаковое.
← →
TUser © (2004-09-25 09:37) [6]Вот именно в такой ситуации организуют один сервер с данными. Иначе проблем не оберешся. Например
1. при изменении данных один комп выключен
2. 2 компа в одн момент вносят разные и несовместимые изменения в одни и те же данные
Современные БД решают эти и другие проблемы - используй их.
← →
Palladin © (2004-09-25 09:41) [7]
> Влад (25.09.04 09:32)
Зачем тебе на каждом компе массив? Ну заведи и синхронизируй с сервером... отсылай то что обновил, и принимай обновленные...
а проблемма с одновременным доступом к данным будет всегда, если она не контролируется на уровне приложения.
← →
Влад (2004-09-25 10:04) [8]> На клиентах ничего не хранится, идут запросы к серверу, как на получение данных так и на обновление...
спасибо, подумаю над вашим вариантом
> Современные БД решают эти и другие проблемы - используй их.
не могу использовать БД. (сервер слабенький P100..)
я уточню вопрос, там есть источник изменений - коротенькие пакеты, в них каждый бит записывается в массив как boolean переменная. Приходит на этот сервер, пакет 256байт, а записывается в массив - 256*8 переменных.
Вот, а остальные компьютеры, они только для просмотра и менять могуть только совсем другие элементы того же массива и гораздо реже чем на сервер приходят пакеты. Я пока еще не начинал делать программу для других компьютеров, так как не знаю с чего начать... С одной стороны хочется чтобы сервер просто раздавал тем компьютерам те же самые пакеты, с другой стороны на тех компьютерах могут меняться данные пользователем.. вот так вот..
простите, если сильно закрутил.
← →
Palladin © (2004-09-25 10:10) [9]тяжелый случай...
> С одной стороны хочется чтобы сервер просто раздавал тем
> компьютерам
Ну и? Проблема в чем?
> с другой стороны на тех компьютерах могут меняться данные
> пользователем
А тут в чем проблема с обновлением серверных данных?
одним алгоритмом не помочь... проблема в непонимании вещей на основе которых строится алгоритм... как я и предпологал в начале...
← →
Влад (2004-09-25 10:26) [10]> проблема в непонимании вещей на основе которых строится алгоритм...
возможно, вывод ваш и правильный, я больше специализируюсь по железу, потому для меня сие есть действительно проблема.
попробую еще уточнить вопрос.
массив примерно такой:
TSignal = packed Record
Name : String[40];
NormalValue : Boolean;
Alarm : Boolean;
Enabled : Boolean;
Active : Boolean;
Value : Boolean;
End;
TSignals = Array of TSignal;
Данные из пакета записываются только в поле Value (выделено жирным), а пользователь может изменять все остальное, кроме Value.
>> С одной стороны хочется чтобы сервер просто раздавал тем
>> компьютерам
>Ну и? Проблема в чем?
>> с другой стороны на тех компьютерах могут меняться данные
>> пользователем
> А тут в чем проблема с обновлением серверных данных?
проблема в том как совместить эти два действия?
← →
TUser © (2004-09-25 10:29) [11]Возможно не в тему - но если так много булевых переменных и такая слабая машина в виде сервера - стоит подумать об использовании TBits.
А по теме - в чем проблема действительно непонятно.
← →
Palladin © (2004-09-25 10:35) [12]
> проблема в том как совместить эти два действия?
Вот вот... я именно об этом...
1 Изучить справку по TClient/ServerSocket (я так понимаю будет использоватся протокол TCP/IP)
2 Построить (найти, может уже кто написал) шаблон Command в сетевом варианте. Точнее доработать до Command-Answer.
3 Для глубокого понимания пункта 1 обратится к http://book.itep.ru (С) Digitman
1 пункт требует знания английского
2 пункт требует гораздо больше опыта чем два месяца
3 пункт тоже требует времени
← →
Влад (2004-09-25 10:47) [13]> 3 Для глубокого понимания пункта 1 обратится к http://book.itep.ru (С) Digitman
Спасибо, следую вашему совету
PS: очень хорошая книга
← →
Anatoly Podgoretsky © (2004-09-25 11:06) [14]Влад (25.09.04 10:04) [8]
Компьютер даже силшком сильный для такой задачи. Остальное тебе уже объяснили. Если реалтайм то [12]
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c