Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2011, 04:20   #1
Dima1111
 
Регистрация: 03.01.2011
Сообщений: 6
Вопрос Совместная работа в сети-использование результатов счета другой машины

Помогите, пожалуйста, решить такую проблему:
на двух машинах (для определенности назовем их «А» и «Б»), объединенных в локальной сети (виндоус икс-пи), запущены независимые программы, написанные на Дельфи 7, которые независимо друг от друга обрабатывают и изменяют содержание файла данных (каждая машина в своей собственной памяти) по определенному алгоритму. По какому алгоритму, для нашего вопроса - не имеет значения. Периодически алгоритм требует для машины «А» считывания и использования актуальных данных из файла машины «Б» и наоборот, из машины «Б» - считывания и использования данных программой машины «А». Во время считывания данных из одной машины в другую алгоритм допускает приостановления работы одной из машин (чтобы не возникла коллизия при одновременном обращении к файлу из двух разных машин). Буду обязан и благодарен за подробный совет, или лучше- за конкретный пример, так как не имею достаточного практического опыта.
Dima1111 вне форума Ответить с цитированием
Старый 05.01.2011, 22:32   #2
Dima1111
 
Регистрация: 03.01.2011
Сообщений: 6
Печаль

Цитата:
Сообщение от Dima1111 Посмотреть сообщение
Помогите, пожалуйста, решить такую проблему:
на двух машинах (для определенности назовем их «А» и «Б»), объединенных в локальной сети (виндоус икс-пи), запущены независимые программы, написанные на Дельфи 7, которые независимо друг от друга обрабатывают и изменяют содержание файла данных (каждая машина в своей собственной памяти) по определенному алгоритму. По какому алгоритму, для нашего вопроса - не имеет значения. Периодически алгоритм требует для машины «А» считывания и использования актуальных данных из файла машины «Б» и наоборот, из машины «Б» - считывания и использования данных программой машины «А». Во время считывания данных из одной машины в другую алгоритм допускает приостановления работы одной из машин (чтобы не возникла коллизия при одновременном обращении к файлу из двух разных машин). Буду обязан и благодарен за подробный совет, или лучше- за конкретный пример, так как не имею опыта работы в сети.
За два дня 62 просмотра и никто не откликнулся! А жаль!

Тогда будем дробить задачу. Может по отдельным частям найдутся, кто готов помочь; вот они:
1. Из машины "А" программно приостанавливаем / возобновляем процесс итерации, протекающий в машине "Б";
2. Из машины "А" считываем значения переменных или массива данных или файла данных, размещенных и определенных в машине "Б".

Это все, конечно, ресурсами делфи-7 и виндоус икс-пи.
Dima1111 вне форума Ответить с цитированием
Старый 05.01.2011, 22:35   #3
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Пусть машины общаются, передают данные и управляют друг другом посредством сокета.

Брут чтоле пишите?
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 05.01.2011, 23:29   #4
Dima1111
 
Регистрация: 03.01.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Valio Посмотреть сообщение
Пусть машины общаются, передают данные и управляют друг другом посредством сокета.

Брут чтоле пишите?
Спасибо что откликнулись. Буду весьма благодарен за конкретный пример. Пусть самый простой.

Это задача моделирования и расчета сложных деформируемых тел. Реализация итерационного алгоритма требует большого (очень) машинного времени. Поэтому возникла идея дробить задачу на части и счет вести параллельно на эн машинах, обединенных в локальной сети. Периодически машины взаимодействуют (считывают и используют данные из другой машины). Если заинтересует сама задача могу изложить подробнее или указать соответствующий сайт.

"Брут" честно говоря не знаю, что значит. Обясните, может сгодится.
Dima1111 вне форума Ответить с цитированием
Старый 06.01.2011, 09:42   #5
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от Dima1111 Посмотреть сообщение
Спасибо что откликнулись. Буду весьма благодарен за конкретный пример. Пусть самый простой.

Это задача моделирования и расчета сложных деформируемых тел. Реализация итерационного алгоритма требует большого (очень) машинного времени. Поэтому возникла идея дробить задачу на части и счет вести параллельно на эн машинах, обединенных в локальной сети. Периодически машины взаимодействуют (считывают и используют данные из другой машины). Если заинтересует сама задача могу изложить подробнее или указать соответствующий сайт.

"Брут" честно говоря не знаю, что значит. Обясните, может сгодится.
Брут Вам не пригодится - это точно Тут всем очень интересно, кто какие задачи приносит. Все с радостью помогают ИСПРАВЛЯТЬ ошибки. 1 2 3 4

Через сокет передаёте один байт
Программа его проверяет
Код:
if b1 = true then ProgramStop else ProgramRun;
ProgramStop - функция останова вычислений.
ProgramRun - функция запуска вычислений.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook

Последний раз редактировалось xwicked; 06.01.2011 в 09:47.
xwicked вне форума Ответить с цитированием
Старый 06.01.2011, 10:25   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Поэтому возникла идея дробить задачу на части и счет вести параллельно на эн машинах, обединенных в локальной сети.
Плюс одна машина (сервер), которая знает чем занята (какой кусок задачи она решает) каждая из других машин и управляет ими, чтобы не получалось так что несколько машин делают одно и то же. В свободное время эта машина также может проводить вычисления. И все машины отчитываются перед сервером о проделанных вычислениях. Все вычисленные данные хранятся в ОДНОМ месте.

простейший (но не простой) вариант организации
1.файл (БД) список задач
единый для всех машин сети (находится на сервере идоступен для всех машин).
2. в файле есть отметки статуса ( надо решить / задача решается / задача решена).
3. задачу можно начинать решать только ПОСЛЕ УСПЕШНОГО изменения статуса.
4. файл задач надо уметь просматривать и корректировать.
5. синхронизация доступа к файлу задач.
Использование монопольного доступа к файлу при изменении статуса и освобождение оного файла сразу после.
6. для удобства вычислений данный файл можно копировать, НО все отчеты о работе должны попадать в ИСХОДНЫЙ файл.

Если коротко то:
единое хранилище и
синхронизация работы.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.01.2011 в 10:53.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Совместная работа hook и PopupMenu (Delphi 7) alxd Помощь студентам 7 24.07.2009 10:32
Самый типичный пример транзакций - перевод денег с одного счета на другой. аня741 Помощь студентам 1 20.03.2009 00:10
Delphi - ищу программиста, совместная работа Shadow_Wind Фриланс 19 14.03.2009 12:43
Вывод результатов в другой Grid Barbara БД в Delphi 7 20.02.2007 15:14