Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Синхронизация массивов


Влад ©   (2004-09-25 09:17:00) 

Помогите начинающему программисту!
Я программированием занимаюсь около двух месяцев, и зашел в тупик на простой задачке.

На нескольких компьютерах должен быть один и тот же массив данных, и при изменении этого массива на одном компьютере, на всех остальных он тоже должен измениться. (массив не больше 50Mb)

Помогите советом, как такое сделать с учетом того, что в системе есть выделенный сервер?

Спасибо за помощь!


Anatoly Podgoretsky   (2004-09-25 11:06:00) [1]

Влад   (25.09.04 10:04) [8]
Компьютер даже силшком сильный для такой задачи. Остальное тебе уже объяснили. Если реалтайм то [12]


Влад   (2004-09-25 10:47:00) [2]

> 3 Для глубокого понимания пункта 1 обратится к http://book.itep.ru(С) Digitman

Спасибо, следую вашему совету

PS: очень хорошая книга


Palladin   (2004-09-25 10:35:00) [3]


> проблема в том как совместить эти два действия?

Вот вот... я именно об этом...

1 Изучить справку по TClient/ServerSocket (я так понимаю будет использоватся протокол TCP/IP)
2 Построить (найти, может уже кто написал) шаблон Command в сетевом варианте. Точнее доработать до Command-Answer.
3 Для глубокого понимания пункта 1 обратится к http://book.itep.ru(С) Digitman

1 пункт требует знания английского
2 пункт требует гораздо больше опыта чем два месяца
3 пункт тоже требует времени


TUser   (2004-09-25 10:29:00) [4]

Возможно не в тему - но если так много булевых переменных и такая слабая машина в виде сервера - стоит подумать об использовании TBits.

А по теме - в чем проблема действительно непонятно.


Влад   (2004-09-25 10:26:00) [5]

> проблема в непонимании вещей на основе которых строится алгоритм...

возможно, вывод ваш и правильный, я больше специализируюсь по железу, потому для меня сие есть действительно проблема.

попробую еще уточнить вопрос.
массив примерно такой:

TSignal = packed Record
 Name        : String[40];
 NormalValue : Boolean;
 Alarm       : Boolean;
 Enabled     : Boolean;
 Active      : Boolean;
  Value       : Boolean;
End;

TSignals = Array of TSignal;

Данные из пакета записываются только в поле Value (выделено жирным), а пользователь может изменять все остальное, кроме Value.

>> С одной стороны хочется чтобы сервер просто раздавал тем
>> компьютерам

>Ну и? Проблема в чем?

>> с другой стороны на тех компьютерах могут меняться данные
>> пользователем

> А тут в чем проблема с обновлением серверных данных?

проблема в том как совместить эти два действия?


Palladin   (2004-09-25 10:10:00) [6]

тяжелый случай...

> С одной стороны хочется чтобы сервер просто раздавал тем
> компьютерам

Ну и? Проблема в чем?


> с другой стороны на тех компьютерах могут меняться данные
> пользователем

А тут в чем проблема с обновлением серверных данных?

одним алгоритмом не помочь... проблема в непонимании вещей на основе которых строится алгоритм... как я и предпологал в начале...


Влад   (2004-09-25 10:04:00) [7]

> На клиентах ничего не хранится, идут запросы к серверу, как на получение данных так и на обновление...

спасибо, подумаю над вашим вариантом

> Современные БД решают эти и другие проблемы - используй их.

не могу использовать БД. (сервер слабенький P100..)

я уточню вопрос, там есть источник изменений - коротенькие пакеты, в них каждый бит записывается в массив как boolean переменная. Приходит на этот сервер, пакет 256байт, а записывается в массив - 256*8 переменных.
Вот, а остальные компьютеры, они только для просмотра и менять могуть только совсем другие элементы того же массива и гораздо реже чем на сервер приходят пакеты. Я пока еще не начинал делать программу для других компьютеров, так как не знаю с чего начать... С одной стороны хочется чтобы сервер просто раздавал тем компьютерам те же самые пакеты, с другой стороны на тех компьютерах могут меняться данные пользователем.. вот так вот..

простите, если сильно закрутил.


Palladin   (2004-09-25 09:41:00) [8]


>  Влад   (25.09.04 09:32)

Зачем тебе на каждом компе массив? Ну заведи и синхронизируй с сервером... отсылай то что обновил, и принимай обновленные...

а проблемма с одновременным доступом к данным будет всегда, если она не контролируется на уровне приложения.


TUser   (2004-09-25 09:37:00) [9]

Вот именно в такой ситуации организуют один сервер с данными. Иначе проблем не оберешся. Например
1. при изменении данных один комп выключен
2. 2 компа в одн момент вносят разные и несовместимые изменения в одни и те же данные
Современные БД решают эти и другие проблемы - используй их.


Влад   (2004-09-25 09:32:00) [10]

> 1 сервер с массивом. И клиенты.

возможно, я неверно выразился, на каждом компьютере свой массив, а содержимое всех массивов одинаковое.


Palladin   (2004-09-25 09:31:00) [11]

Если алгоритмом, то бесплатно...
На клиентах ничего не хранится, идут запросы к серверу, как на получение данных так и на обновление...


Влад   (2004-09-25 09:27:00) [12]

> Ну и чем тебе помочь?

ну хотя бы алгоритмом в общих чертах...

> Сколько за помощь заплатишь?

а сколько такая помощь стоит?


TUser   (2004-09-25 09:27:00) [13]


> На нескольких компьютерах должен быть один и тот же массив
> данных, и при изменении этого массива на одном компьютере,
> на всех остальных он тоже должен измениться. (массив не
> больше 50Mb)

1 сервер с массивом. И клиенты.


Palladin   (2004-09-25 09:22:00) [14]

Ну и чем тебе помось? Сколько за помощь заплатишь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо