NamedPipe
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
NamedPipe
Кто-нибудь работал с таким? Примерами не поделитесь?
Это я только кажусь дураком! На самом деле я полный идиот!
NamedPipe
Если речь об именованных каналах, то давненько. Если не секрет - для каких целей.
C10, Win10x64
NamedPipe
Я работал давно с MSSql Server'ом. Но никакой разницы в написании программы и работе нет, что NamedPipe, что TCP/IP.
За исключением, насколько я помню, через NamedPipe можно работать только на том же компе, где стоит сервак.
А через TCP/IP с любого.
За исключением, насколько я помню, через NamedPipe можно работать только на том же компе, где стоит сервак.
А через TCP/IP с любого.
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
NamedPipe
Я достаточно серьезно ковырялся в вопросе и обязательно вернусь к нему где-то осенью.
Общий вывод - если тебе не нужны именно NamedPipes, лучше с ними не связываться - слишком сложно...
80% кода занимает работа со всяческими Security Descriptor и прочими прелестями безопасности. Работать с TCP/IP гораздо проще.
Режим MESSAGE, в целом, похож на TCP/IP, но у него есть ограничения на размер сообщения 32 или 64 Мб, в зависимости от ОС.
Единственный момент, при котором есть смысл использовать NamedPipes, это если тебе нужен режим BYTE, но там совсем другие правила...
Короче, без крайней необходимости, лучше не связываться...
Общий вывод - если тебе не нужны именно NamedPipes, лучше с ними не связываться - слишком сложно...
80% кода занимает работа со всяческими Security Descriptor и прочими прелестями безопасности. Работать с TCP/IP гораздо проще.
Режим MESSAGE, в целом, похож на TCP/IP, но у него есть ограничения на размер сообщения 32 или 64 Мб, в зависимости от ОС.
Единственный момент, при котором есть смысл использовать NamedPipes, это если тебе нужен режим BYTE, но там совсем другие правила...
Короче, без крайней необходимости, лучше не связываться...
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
NamedPipe
Есть две задачи написанные двумя разными программистами. Надо передаВАть данные из одной в другую с минимальными переделками. Передача данных может произойти в любой момент, а скорость реакции должна быть как для диалоговой процедуры.
Сейчас отлаживаю вариант с передачей через файл и семафором через SendMessage. Тут есть свои тараканы и сложности, т.к. на чтение и очистку файла требуется время, а потребность записать новые данные может возникнуть в любой момент.
По поводу использования TCP/IP есть некоторые сомнения. С вероятность 99.(9)% на компе не будет сетевой карты и вообще, всё, что связано с сетью и сетевыми протоколами, может быть вырезано как класс. Уже сталкивался с таким
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
NamedPipe
Потому и прошу пример.Constantine писал(а): ↑18 Апрель 2019, 9:33Короче, без крайней необходимости, лучше не связываться...
Это я только кажусь дураком! На самом деле я полный идиот!
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
NamedPipe
Правильно ли я понял, что передавать данные по сети не нужно?
Если так, то не заморачивайся с NamedPipes. Используй общую область памяти (File Mapping) и механизм обмена сообщениями между окнами.
Если так, то не заморачивайся с NamedPipes. Используй общую область памяти (File Mapping) и механизм обмена сообщениями между окнами.
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
NamedPipe
Идея прекрасная, но дьявол в деталях...Constantine писал(а): ↑18 Апрель 2019, 13:32Используй общую область памяти (File Mapping) и механизм обмена сообщениями между окнами
Сообщения я могу организовать только в одну сторону (оттуда ко мне). Тот программист готов, максимум, вызвать дллку...
Т.е. получить информацию о том, что файл заполнен - просто
А вот как дать понять, что я всё обработал и можно засылать данные?!
Это я только кажусь дураком! На самом деле я полный идиот!
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
NamedPipe
А фиг его знает, вашбродь! Но не на #
Хорошо, хоть программист есть. А то, порой, и того не бывает.
Видимо, придётся работать через файлы.
Это я только кажусь дураком! На самом деле я полный идиот!
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
NamedPipe
В любом случае, другой программе нужно будет как-то узнать, что ты закончил обработку.
Простейший способ сделать это - отправить нужному окну другой программы соответствующее сообщение, а уже там его обработать и отправить тебе следующую порцию данных.
Можно сделать через мьютекс, семафор, DDE, и т.д. Но обрабатывать его в другой программе все равно придется...
Работа с File Mapping мало отличается от работы с обычным файлом: чтение осуществляется той же самой функцией API ReadFile, запись - WriteFile и т.д. Только вместо HANDLE файла подсовывается HANDLE объекта. Также у этого объекта может быть имя, по которому его легко можно идентифицировать.
Только все это происходит в оперативной памяти, а не на диске, следовательно, работает в десятки раз быстрее. Максимальный размер объекта - 4 Гб.
Простейший способ сделать это - отправить нужному окну другой программы соответствующее сообщение, а уже там его обработать и отправить тебе следующую порцию данных.
Можно сделать через мьютекс, семафор, DDE, и т.д. Но обрабатывать его в другой программе все равно придется...
Работа с File Mapping мало отличается от работы с обычным файлом: чтение осуществляется той же самой функцией API ReadFile, запись - WriteFile и т.д. Только вместо HANDLE файла подсовывается HANDLE объекта. Также у этого объекта может быть имя, по которому его легко можно идентифицировать.
Только все это происходит в оперативной памяти, а не на диске, следовательно, работает в десятки раз быстрее. Максимальный размер объекта - 4 Гб.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1376
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
- Контактная информация:
NamedPipe
Так сабж тоже примерно так же и работает? нет?Constantine писал(а): ↑18 Апрель 2019, 14:29Работа с File Mapping мало отличается от работы с обычным файлом: чтение осуществляется той же самой функцией API ReadFile, запись - WriteFile и т.д. Только вместо HANDLE файла подсовывается HANDLE объекта. Также у этого объекта может быть имя, по которому его легко можно идентифицировать.
viewtopic.php?f=1&t=3765 - в прошлый раз такой активности не было )
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
NamedPipe
Это, примерно, как круглое и зеленое...
NamedPipes - это канал связи между приложениями, который может работать как в пределах одного компьютера, так и по сети.
Объект File Mapping - это файл в памяти, который может находиться как на локальном компьютере, так и на удаленном.
Соответственно, если у Игоря нет необходимости передавать данные по сети, то и NamedPipes ему не нужны: в пределах локальной машины все можно организовать гораздо проще...
NamedPipes - это канал связи между приложениями, который может работать как в пределах одного компьютера, так и по сети.
Объект File Mapping - это файл в памяти, который может находиться как на локальном компьютере, так и на удаленном.
Соответственно, если у Игоря нет необходимости передавать данные по сети, то и NamedPipes ему не нужны: в пределах локальной машины все можно организовать гораздо проще...
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2329
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
NamedPipe
Значит, проще всего, работать через файлы на винтеConstantine писал(а): ↑18 Апрель 2019, 14:29Можно сделать через мьютекс, семафор, DDE, и т.д. Но обрабатывать его в другой программе все равно придется...
С обработкой сообщения в чужой программе есть сложности
Это я только кажусь дураком! На самом деле я полный идиот!