Посл.ответ |
Сообщение |
Ранг: 113.4 (ветеран) Активность: 0.13↘0 Статус: Участник Ветеран
|
Создано: 29 июня 2008 16:21 · Личное сообщение · #1
Здравствуйте!
Подскажите, пожалуйста, как оптимальнее всего сделать обмен между двумя прогами(обе написаны на делфях). В какую сторону лучше всего копать?
Заранее спасибо за помощь ;)
----- моя подпись! | Сообщение посчитали полезным: |
|
 Ранг: 95.2 (постоянный), 26thx Активность: 0.06↘0 Статус: Участник
|
Создано: 29 июня 2008 16:33 · Личное сообщение · #2
Через сокет
| Сообщение посчитали полезным: |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 29 июня 2008 16:34 · Личное сообщение · #3
locker_fx можешь порулить в сторону WM_COPYDATA
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |
Ранг: 113.4 (ветеран) Активность: 0.13↘0 Статус: Участник Ветеран
|
Создано: 29 июня 2008 16:41 · Личное сообщение · #4
Stack пишет:
locker_fx можешь порулить в сторону WM_COPYDATA
Нагуглил, курю...
----- моя подпись! | Сообщение посчитали полезным: |
Ранг: 63.8 (постоянный), 2thx Активность: 0.03↘0 Статус: Участник
|
Создано: 29 июня 2008 17:05 · Поправил: drin · Личное сообщение · #5
немного более продвинутое решение: help.madshi.net/IPC.htm с возможностью получить ответ неограниченный по размеру
правда сам никогда не юзал
| Сообщение посчитали полезным: |
 Ранг: 260.9 (наставник) Активность: 0.12↘0 Статус: Участник John Smith
|
Создано: 29 июня 2008 17:35 · Личное сообщение · #6
маппинги + мьютексы = быстро весело надежно
правда от прямоты рук зависит...
----- Недостаточно только получить знания:надо найти им приложение | Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 29 июня 2008 19:27 · Поправил: s0larian · Личное сообщение · #7
locker_fx, для delphi есть туча компонентов оборачивающих сокеты. Выбери какой-нить по интерфейсу и сделай client/server на 127.0.0.1... В дальнейшем это будет работать и по сетке.
| Сообщение посчитали полезным: |
Ранг: 309.8 (мудрец), 21thx Активность: 0.17↘0 Статус: Участник
|
Создано: 30 июня 2008 00:46 · Личное сообщение · #8
если требуется общение в обе стороны то подойдёт пайп... если только в одну то можно поюзать mailslot...
----- Shalom ebanats! | Сообщение посчитали полезным: |
Ранг: 2.1 (гость) Активность: 0=0 Статус: Участник
|
Создано: 30 июня 2008 11:30 · Поправил: Izis · Личное сообщение · #9
Я сам юзаю маппинг файлов для обмена данных с библиотекой на дельфи, и разницы нет, на чем писаны проги/длл
| Сообщение посчитали полезным: |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 30 июня 2008 11:36 · Личное сообщение · #10
Ну да если требуеться передать большое количесвто данных то WM_COPYDATA не рулит. но если просто надо передать пару строчек текста\данных то нет смысла заморачиваться с сокетами и прочими.
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |
 Ранг: 793.4 (! !), 568thx Активность: 0.74↘0 Статус: Участник Шаман
|
Создано: 30 июня 2008 11:58 · Личное сообщение · #11
На васме целая статья была на эту тему, курить поиск неохота сам поищи.
----- Yann Tiersen best and do not fuck | Сообщение посчитали полезным: |
Ранг: 113.4 (ветеран) Активность: 0.13↘0 Статус: Участник Ветеран
|
Создано: 30 июня 2008 17:07 · Личное сообщение · #12
Stack пишет:
Ну да если требуеться передать большое количесвто данных то WM_COPYDATA не рулит. но если просто надо передать пару строчек текста\данных то нет смысла заморачиваться с сокетами и прочими.
Сейчас нужно сделать как можно проще. Объёмы не очень большие
----- моя подпись! | Сообщение посчитали полезным: |
Ранг: 39.4 (посетитель), 9thx Активность: 0.01=0.01 Статус: Участник
|
Создано: 30 июня 2008 17:48 · Поправил: 2nd · Личное сообщение · #13
для delphi было такое :
Application Interprocess Communication Library v1.01 (c) Peter Sippel
вот статья на эту тему
www.compress.ru/article.aspx?id=11763&iid=458
также можно посмотреть в стандартный каталог delphi:
x:\Program Files\Borland\Delphix\Demos\Ipcdemos
| Сообщение посчитали полезным: |
Ранг: 113.4 (ветеран) Активность: 0.13↘0 Статус: Участник Ветеран
|
Создано: 30 июня 2008 18:56 · Личное сообщение · #14
2nd
Спасибо, почитаю.
Подскажите плиз. А как по сети(мировой паутине) держать постоянное соединение лучше всего? стандартных компонентов клиент-сервер хватит?
----- моя подпись! | Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 30 июня 2008 19:39 · Личное сообщение · #15
locker_fx пишет:
Подскажите плиз. А как по сети(мировой паутине) держать постоянное соединение лучше всего? стандартных компонентов клиент-сервер хватит?
Так же как и по локалке - TCP соединение. В виде heart beat можно использовать TCP keep alive или, в случае собственного протокола, написать свой собственный "nop" и "ack". Реализация - дело опыта и вкуса. Для delphi немеряно TCP компонентов.
| Сообщение посчитали полезным: |
Ранг: 63.8 (постоянный), 2thx Активность: 0.03↘0 Статус: Участник
|
Создано: 30 июня 2008 21:53 · Личное сообщение · #16
s0larian пишет:
Для delphi немеряно TCP компонентов.
например INDY, имхо самая простая и с гигантским функционалом, но правда местами кривовато реализованная
| Сообщение посчитали полезным: |
Ранг: 107.5 (ветеран) Активность: 0.15↘0 Статус: Участник
|
Создано: 01 июля 2008 11:49 · Личное сообщение · #17
drin пишет:
имхо самая простая и с гигантским функционалом, но правда местами кривовато реализованная
try ... except рулит - на крайняк там сорсы есть можно порпарвить если что.
----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 | Сообщение посчитали полезным: |
Ранг: 160.1 (ветеран) Активность: 0.07↘0 Статус: Участник
|
Создано: 01 июля 2008 20:51 · Личное сообщение · #18
locker_fx пишет:
имальнее всего сделать обмен между двумя прогами
проги на одном компе всегда или могут быть на разных ?
| Сообщение посчитали полезным: |
Ранг: 271.5 (наставник), 12thx Активность: 0.15↘0 Статус: Участник Packer Reseacher
|
Создано: 02 июля 2008 19:21 · Личное сообщение · #19
Нашел в --> Исследование переносимого формата исполнимых файлов "сверху вниз" <-- http://education.kulichki.net/comp/hack/27.htm#back_3
следующее:
0x10000000 - Сегмент раздеяют все процессы, загрузившие данный файл
т.е. может имеет смысл сделать для двух программ одну секцию такую и положить ее в dll, ну заодно в эту же dll запихнуть и нужный код для двух приложений.
----- My love is very cool girl. | Сообщение посчитали полезным: |
Ранг: 113.4 (ветеран) Активность: 0.13↘0 Статус: Участник Ветеран
|
Создано: 02 июля 2008 19:32 · Личное сообщение · #20
theCollision пишет:
Нашел в --> Исследование переносимого формата исполнимых файлов "сверху вниз" <--
следующее:
0x10000000 - Сегмент раздеяют все процессы, загрузившие данный файл
т.е. может имеет смысл сделать для двух программ одну секцию такую и положить ее в dll, ну заодно в эту же dll запихнуть и нужный код для двух приложений.
Спасибо, но всё это слишком сложно и геморойно.
Для обмена между прогами, которые на одном компе заюзал WM_COPYDATA, для остальных коннектов юзаю сокеты.
----- моя подпись! | Сообщение посчитали полезным: |
 Ранг: 681.5 (! !), 405thx Активность: 0.42↘0.21 Статус: Участник ALIEN Hack Team
|
Создано: 03 июля 2008 12:21 · Личное сообщение · #21
locker_fx
Смотря обмен чем нужно реализовать, если необходима реакция на события, то поможет обьект ядра Event, CreateEvent и так далее смотри в документации или у Рихтера "Windows для профессионалов", если нужен обмен, к прнимеру, каким-то текстом, то можно либо использовать мэппинг, либо попробовать кое-что посвежее: можно создать dll с секцией данных, разделяемой в памяти, и использовать её, всё так же, как и при реализации хуков, только нет никаких хуков
----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: |
Ранг: 237.0 (наставник), 20thx Активность: 0.13↘0 Статус: Участник sysenter
|
Создано: 03 июля 2008 21:20 · Поправил: HiEndsoft · Личное сообщение · #22
Юзаю расшаренные секции в dll для мелочей, и файломаппинг для объемных и не парюсь: быстрый обмен в памяти, а не ч/з тормозные события, MailSlots и т.п.
----- продавец резиновых утёнков | Сообщение посчитали полезным: |
Ранг: 63.8 (постоянный), 2thx Активность: 0.03↘0 Статус: Участник
|
Создано: 05 июля 2008 09:33 · Личное сообщение · #23
а кто нибудь юзал IPC?
если задача, к примеру, обмениваться десятками а то и сотнями тысяч мелких сообщений байт этак в 256, используя пул потоков в 20, и с минимальными задержками (меньше 1мс) и расходами тактов... IPC для таких целей подойдет? а то с TCP/IP в данной задаче много накладных расходов... или может что-то иное юзали для таких целей?
| Сообщение посчитали полезным: |
 Ранг: 387.4 (мудрец) Активность: 0.17↘0 Статус: Участник системщик
|
Создано: 06 июля 2008 04:19 · Поправил: s0larian · Личное сообщение · #24
drin, UDP соединение на localhost для windows, и unix domain sockets для linux. На обоих системах такой тип соединения - хороший компромисс между удобным/известным API и производительностью. На windows пакеты даже не доходят до NDIS слоя - то есть почти нету "накладных расходов".
| Сообщение посчитали полезным: |
Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 07 июля 2008 01:35 · Личное сообщение · #25
Вот когда то тоже озадачивался и перепробовал всё что мог, и матил и пайп и сокеты, но требовалось чтобы приложение так же работало в 9x система, а там этого всего нет. В архиве то, что использовал для своих проектов. Может пригодится один на IPC другой Message's 8871_06.07.2008_CRACKLAB.rU.tgz - AppCommunication.7z
| Сообщение посчитали полезным: |