| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Локальная сеть |
| Автор: Valery 26.3.2007, 21:46 | ||
| Кто просвятит новичка и дохотчиво прочтет лекцию ? Вопрос в следующем на примере:
В потоке "IdTCPServer1Execute" принимаются и обрабатываются сообщения от нескольких клиентов. Для обработки сообщений в потоке вызывается внешняя программа "XXX". Если в потоке "IdTCPServer1Execute" еще незавершена внешняя программа "XXX", а в это время в этом потоке пришло сообщение от другого Клиента, то еще раз будет вызвана незавершенная таже самая программа "XXX" ??? Если это так, то как избежать одновременного многоразового вызова вложенной в поток программы ? |
| Автор: Valery 29.3.2007, 00:14 |
| Спасибо за ответ. У меня задача в следующем состоит. Необходимо реализовать сеть, состоящуую из главного диспетчерного компьютера и из 50 сетевых компьютеров. При этом главный диспетчерный компьютер и все остальные должны иметь право быть и серверами и клиентами. А именно главный комп всем остальным компам и все остальные в сторону главного компа должны иметь возможность посылать и сообщения и файлы. При этом каждым компом принимаемое сообщение или файл должны обрабатываться, то есть вызываться внешние программы. Базируясь на вашем опыте прошу совета и примера алгоритма для решения такой задачи. |
| Автор: dumb 29.3.2007, 13:34 | ||
| спасибо за оказанное доверие, конечно как я уже говорил, вызов внешней программы на каждое сообщение - не есть гут, и, по-хорошему, надо либо перетаскивать функционал этой программы в твое приложение, либо изменять эту внешнюю программу, чтобы она постоянно работала, а сообщения получала посредством ipc(inter-process communication). если же по-плохому, в лоб, то: кидаем на форму пару серверов, пару клиентов: одна пара - для сообщений, другая - для файлов. делаем функцию запуска внешней программы примерно такую:
csexec - переменная типа TCriticalSection либо глобальная, либо в классе формы, например. не забудь сделать InitializeCriticalSection где-нибудь в конструкторе и DeleteCriticalSection в деструкторе формы... ps. если есть доступ к исходникам "внешних программ" или точно известно, что они делают, то настоятельно рекомендую сделать "по-хорошему". |