Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.039 c
3-1095155532
_alex_
2004-09-14 13:52
2004.10.10
FireBird


1-1095936668
Kniaz
2004-09-23 14:51
2004.10.10
Работа с файлами


1-1096050358
Kolan
2004-09-24 22:25
2004.10.10
Перебрать все имена папок в Директории


14-1095554579
Думкин
2004-09-19 04:42
2004.10.10
С днем рождения! 19 сентября


1-1096024129
DimonNew
2004-09-24 15:08
2004.10.10
Clipboard+Word





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский