NamedPipe

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

NamedPipe

Сообщение Губин Игорь »

Кто-нибудь работал с таким? Примерами не поделитесь?
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

NamedPipe

Сообщение vic7tar »

Если речь об именованных каналах, то давненько. Если не секрет - для каких целей.
C10, Win10x64
PavelNK
Старожил
Сообщения: 262
Зарегистрирован: 15 Март 2011, 8:02

NamedPipe

Сообщение PavelNK »

Я работал давно с MSSql Server'ом. Но никакой разницы в написании программы и работе нет, что NamedPipe, что TCP/IP.
За исключением, насколько я помню, через NamedPipe можно работать только на том же компе, где стоит сервак.
А через TCP/IP с любого.
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

NamedPipe

Сообщение Admin »

Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine »

Я достаточно серьезно ковырялся в вопросе и обязательно вернусь к нему где-то осенью.
Общий вывод - если тебе не нужны именно NamedPipes, лучше с ними не связываться - слишком сложно...
80% кода занимает работа со всяческими Security Descriptor и прочими прелестями безопасности. Работать с TCP/IP гораздо проще.
Режим MESSAGE, в целом, похож на TCP/IP, но у него есть ограничения на размер сообщения 32 или 64 Мб, в зависимости от ОС.
Единственный момент, при котором есть смысл использовать NamedPipes, это если тебе нужен режим BYTE, но там совсем другие правила...
Короче, без крайней необходимости, лучше не связываться...
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

NamedPipe

Сообщение Губин Игорь »

vic7tar писал(а): 17 Апрель 2019, 18:35Если речь об именованных каналах, то давненько. Если не секрет - для каких целей.
Есть две задачи написанные двумя разными программистами. Надо передаВАть данные из одной в другую с минимальными переделками. Передача данных может произойти в любой момент, а скорость реакции должна быть как для диалоговой процедуры.

Сейчас отлаживаю вариант с передачей через файл и семафором через SendMessage. Тут есть свои тараканы и сложности, т.к. на чтение и очистку файла требуется время, а потребность записать новые данные может возникнуть в любой момент.
Constantine писал(а): 18 Апрель 2019, 9:33 Работать с TCP/IP гораздо проще.
По поводу использования TCP/IP есть некоторые сомнения. С вероятность 99.(9)% на компе не будет сетевой карты и вообще, всё, что связано с сетью и сетевыми протоколами, может быть вырезано как класс. Уже сталкивался с таким
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

NamedPipe

Сообщение Губин Игорь »

Constantine писал(а): 18 Апрель 2019, 9:33Короче, без крайней необходимости, лучше не связываться...
Потому и прошу пример. :idied:
Это я только кажусь дураком! На самом деле я полный идиот!
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine »

Правильно ли я понял, что передавать данные по сети не нужно?
Если так, то не заморачивайся с NamedPipes. Используй общую область памяти (File Mapping) и механизм обмена сообщениями между окнами.
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

NamedPipe

Сообщение Губин Игорь »

Constantine писал(а): 18 Апрель 2019, 13:32Используй общую область памяти (File Mapping) и механизм обмена сообщениями между окнами
Идея прекрасная, но дьявол в деталях...
Сообщения я могу организовать только в одну сторону (оттуда ко мне). Тот программист готов, максимум, вызвать дллку...
Т.е. получить информацию о том, что файл заполнен - просто
А вот как дать понять, что я всё обработал и можно засылать данные?!
Это я только кажусь дураком! На самом деле я полный идиот!
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine »

Тогда, тем более, не NamedPipes.
На чем написана другая программа?
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

NamedPipe

Сообщение Губин Игорь »

Constantine писал(а): 18 Апрель 2019, 13:51На чем написана другая программа?
А фиг его знает, вашбродь! Но не на # :cat:
Хорошо, хоть программист есть. А то, порой, и того не бывает. :idied:

Видимо, придётся работать через файлы. :idied:
Это я только кажусь дураком! На самом деле я полный идиот!
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine »

В любом случае, другой программе нужно будет как-то узнать, что ты закончил обработку.
Простейший способ сделать это - отправить нужному окну другой программы соответствующее сообщение, а уже там его обработать и отправить тебе следующую порцию данных.
Можно сделать через мьютекс, семафор, DDE, и т.д. Но обрабатывать его в другой программе все равно придется...
Работа с File Mapping мало отличается от работы с обычным файлом: чтение осуществляется той же самой функцией API ReadFile, запись - WriteFile и т.д. Только вместо HANDLE файла подсовывается HANDLE объекта. Также у этого объекта может быть имя, по которому его легко можно идентифицировать.
Только все это происходит в оперативной памяти, а не на диске, следовательно, работает в десятки раз быстрее. Максимальный размер объекта - 4 Гб.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

NamedPipe

Сообщение RaFaeL »

Constantine писал(а): 18 Апрель 2019, 14:29Работа с File Mapping мало отличается от работы с обычным файлом: чтение осуществляется той же самой функцией API ReadFile, запись - WriteFile и т.д. Только вместо HANDLE файла подсовывается HANDLE объекта. Также у этого объекта может быть имя, по которому его легко можно идентифицировать.
Так сабж тоже примерно так же и работает? нет?
viewtopic.php?f=1&t=3765 - в прошлый раз такой активности не было )
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine »

Это, примерно, как круглое и зеленое... :-)
NamedPipes - это канал связи между приложениями, который может работать как в пределах одного компьютера, так и по сети.
Объект File Mapping - это файл в памяти, который может находиться как на локальном компьютере, так и на удаленном.
Соответственно, если у Игоря нет необходимости передавать данные по сети, то и NamedPipes ему не нужны: в пределах локальной машины все можно организовать гораздо проще...
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2301
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 17 раз

NamedPipe

Сообщение Губин Игорь »

Constantine писал(а): 18 Апрель 2019, 14:29Можно сделать через мьютекс, семафор, DDE, и т.д. Но обрабатывать его в другой программе все равно придется...
Значит, проще всего, работать через файлы на винте
С обработкой сообщения в чужой программе есть сложности
Это я только кажусь дураком! На самом деле я полный идиот!
Ответить