Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обмен данными между процессами [D6, Win2k, WinXP]


Страницы:   1 2 3 4 5

Сергей_С ©   (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, семафоры и мутанты


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо