![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обмен данными между процессами [D6, Win2k, WinXP]
Сергей_С © (2006-07-12 09:19:00)Господа, подскажите, каким образом можно обмениваться данными меджу процессами, запущенными одновременно в одной ОС. Какой-нибудь простой и стабильный способ.
Варианты через файловую систему, DDE, OLE, COM - просьба не рассматривать.
Данные имеют бинарный формат.
Заранее спасибо.
MikProg (2006-07-12 21:25:00) [61]
> Юрий Зотов © (12.07.06 10:15) [2]
Прав однако! :)
DrPass (2006-07-12 21:20:00) [62]
> han_malign © (12.07.06 18:25) [20]
И что?
> DVM © (12.07.06 18:30) [21]
Да всяко бывает. Видел бы ты, сколько юзеров сидят еще под Win9x... В любом случае, сетевые технологии должны использоваться для сетевых приложений. Гонять данные из одной программы в другую через весь стек сетевых протоколов туда и обратно - плохое занятие, если есть альтернативные 100% работающие и при этом более эффективные и простые технологии.
DVM (2006-07-12 18:30:00) [63]
> Интересно, как ты будешь работать через сокеты, если на
> машине нет TCP/IP
Трудно найти такую машину. К тому же сокеты это не только TCP/IP и даже IP
han_malign (2006-07-12 18:25:00) [64]
> если на машине нет TCP/IP
127.0.0.1
DrPass (2006-07-12 18:19:00) [65]
> Чапаев © (12.07.06 17:38) [16]
> А почему о именованных каналах никто не вспомнил?
Вспомнили еще в третьем посте этой ветки
> DVM © (12.07.06 18:15) [18]
>
> > Какой-нибудь простой и стабильный способ.
>
> ИМХО сокеты самое лучшее. И универсальное.
Ты не прав. Интересно, как ты будешь работать через сокеты, если на машине нет TCP/IP? Уж лучше по нуль-модему :)
DVM (2006-07-12 18:15:00) [66]
> Какой-нибудь простой и стабильный способ.
ИМХО сокеты самое лучшее. И универсальное.
Rial (2006-07-12 17:52:00) [67]
> han_malign © (12.07.06 16:56) [15]
>
>
> > Не понимаю, куда здесь можно запихнуть 2 метра данных.
>
Фактически, телепатия.
> Медвед (12.07.06 15:48) [10]
>
> Messagaми ?
А можно и так. Тут аж по несколько байт передается, в lWaram и wParam!
Можно еще передавать информацию, передавая сообщения с
WM_USER по WM_USER + $100. Еще байтик...
Бред все это, но мне пригождалось.
И скорость у второго способа не такая уж и низкая.
О подводных камнях не буду уж говорить ...
Чапаев (2006-07-12 17:38:00) [68]А почему о именованных каналах никто не вспомнил?
han_malign (2006-07-12 16:56:00) [69]
> Не понимаю, куда здесь можно запихнуть 2 метра данных.
while(WaitForSingleObject(hReceiveReadyEvent, INFINITE) = WAIT_OBJECT_0)do begin
if(...)then SetEvent(hBitStateEvent) else ResetEvent(hBitStateEvent);
SetEvent(hDataReadyEvent);
end;
SetEvent(hReceiveReadyEvent);
while(WaitForSingleObject(hDataReadyEvent, INFINITE) = WAIT_OBJECT_0)do begin
if(WaitForSingleObject(hBitStateEvent, 0) = WAIT_OBJECT_0)
then ...
else ...;
SetEvent(hReceiveReadyEvent);
end;
битовый(булевый) поток :)))
DrPass (2006-07-12 15:53:00) [70]
> Сергей М. © (12.07.06 15:49) [11]
Смайлики видел?
Юрий Зотов (2006-07-12 15:53:00) [71]> DrPass © (12.07.06 15:17) [7]
К синхронизации передачи данных все это, конечно, относится. А как это относится к самой передаче данных? Никак. А она не обязана быть синхронной, да и вопрос вовсе не о синхронизации.
> Rial © (12.07.06 15:39) [8]
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTR lpName
);
Не понимаю, куда здесь можно запихнуть 2 метра данных. В чем я неправ?
han_malign (2006-07-12 15:51:00) [72]
> Эта... мож, я че не понимаю
Ну, на трех Event-ах можно организовать "полноценный" бинарный поток. Изврат конечно, но возможность то есть... :)
Сергей М. (2006-07-12 15:49:00) [73]
> DrPass © (12.07.06 15:17) [7]
> DrPass © (12.07.06 15:17) [7]
Мьютексы, семафоры и ивенты - не более чем объекты интра/интерпроцессной синхронизации. К интерпроцессному инф.обмену они не имеют отношения.
Медвед (2006-07-12 15:48:00) [74]>Rial © (12.07.06 15:39) [8]
>У меня как то 2 приложения Event-ами 2 МБ данных передавали друг другу...
Messagaми ?
Игорь Шевченко (2006-07-12 15:47:00) [75]
> но какое отношение семафоры, мутанты (мьютексы?) и Event'ы
> имеют к обмену данными между процессами?
Косвенное
Rial (2006-07-12 15:39:00) [76]
> Юрий Зотов © (12.07.06 15:00) [6]
>
> Эта... мож, я че не понимаю, но какое отношение семафоры,
> мутанты (мьютексы?) и Event'ы имеют к обмену данными между
> процессами?
А что в этом такого ?
У меня как то 2 приложения Event-ами 2 МБ данных передавали друг другу...
Правда, с остальными 2-мя сложнее уже.
DrPass (2006-07-12 15:17:00) [77]
> какое отношение семафоры, мутанты (мьютексы?) и Event'ы
> имеют к обмену данными между процессами?
Ну, один процесс может чего-нибудь написать в файл и установить... мм...мутанта :D. Второй - определить наличие мутанта и после этого считать из файла. Чем не обмен? :)))
Юрий Зотов (2006-07-12 15:00:00) [78]Эта... мож, я че не понимаю, но какое отношение семафоры, мутанты (мьютексы?) и Event'ы имеют к обмену данными между процессами?
GrayFace (2006-07-12 14:15:00) [79]А еще Event'ы
han_malign (2006-07-12 10:38:00) [80]Socket, MailSlot, семафоры и мутанты