Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Синхронизация массивов   Найти похожие ветки 

 
Влад   (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.035 c
1-1095800244
Newad
2004-09-22 00:57
2004.10.10
dll dynamik link


14-1095628442
Yanis
2004-09-20 01:14
2004.10.10
Не могу ветку про бесплатный доступ к сайту найти :)


14-1095732732
Думкин
2004-09-21 06:12
2004.10.10
С днем рождения! 21 сентября


6-1091690867
Dmitry V. Averuanov
2004-08-05 11:27
2004.10.10
Удаленная перезагрузка Windows NT


14-1095669902
Карелин Артем
2004-09-20 12:45
2004.10.10
Галлы vs Римляне. Было ли такое?