NamedPipe

Clarion, Clarion 7

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

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

NamedPipe

Сообщение Губин Игорь » 17 Апрель 2019, 18:06

Кто-нибудь работал с таким? Примерами не поделитесь?
Это я только кажусь дураком! На самом деле я полный идиот!

Аватара пользователя
vic7tar
Старожил
Сообщения: 218
Зарегистрирован: 09 Февраль 2017, 20:12

NamedPipe

Сообщение vic7tar » 17 Апрель 2019, 18:35

Если речь об именованных каналах, то давненько. Если не секрет - для каких целей.
C10, Win10x64

PavelNK
Старожил
Сообщения: 225
Зарегистрирован: 15 Март 2011, 8:02

NamedPipe

Сообщение PavelNK » 17 Апрель 2019, 18:44

Я работал давно с MSSql Server'ом. Но никакой разницы в написании программы и работе нет, что NamedPipe, что TCP/IP.
За исключением, насколько я помню, через NamedPipe можно работать только на том же компе, где стоит сервак.
А через TCP/IP с любого.

Аватара пользователя
Admin
Администратор
Сообщения: 3434
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

NamedPipe

Сообщение Admin » 18 Апрель 2019, 1:32

Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Constantine
Активист
Сообщения: 144
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine » 18 Апрель 2019, 9:33

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

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1279
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

NamedPipe

Сообщение Губин Игорь » 18 Апрель 2019, 12:39

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

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

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1279
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

NamedPipe

Сообщение Губин Игорь » 18 Апрель 2019, 12:41

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

Constantine
Активист
Сообщения: 144
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine » 18 Апрель 2019, 13:32

Правильно ли я понял, что передавать данные по сети не нужно?
Если так, то не заморачивайся с NamedPipes. Используй общую область памяти (File Mapping) и механизм обмена сообщениями между окнами.

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1279
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

NamedPipe

Сообщение Губин Игорь » 18 Апрель 2019, 13:46

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

Constantine
Активист
Сообщения: 144
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine » 18 Апрель 2019, 13:51

Тогда, тем более, не NamedPipes.
На чем написана другая программа?

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1279
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

NamedPipe

Сообщение Губин Игорь » 18 Апрель 2019, 14:18

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

Видимо, придётся работать через файлы. :idied:
Это я только кажусь дураком! На самом деле я полный идиот!

Constantine
Активист
Сообщения: 144
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine » 18 Апрель 2019, 14:29

В любом случае, другой программе нужно будет как-то узнать, что ты закончил обработку.
Простейший способ сделать это - отправить нужному окну другой программы соответствующее сообщение, а уже там его обработать и отправить тебе следующую порцию данных.
Можно сделать через мьютекс, семафор, DDE, и т.д. Но обрабатывать его в другой программе все равно придется...
Работа с File Mapping мало отличается от работы с обычным файлом: чтение осуществляется той же самой функцией API ReadFile, запись - WriteFile и т.д. Только вместо HANDLE файла подсовывается HANDLE объекта. Также у этого объекта может быть имя, по которому его легко можно идентифицировать.
Только все это происходит в оперативной памяти, а не на диске, следовательно, работает в десятки раз быстрее. Максимальный размер объекта - 4 Гб.

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 862
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

NamedPipe

Сообщение RaFaeL » 18 Апрель 2019, 20:17

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

Constantine
Активист
Сообщения: 144
Зарегистрирован: 07 Февраль 2017, 16:58

NamedPipe

Сообщение Constantine » 19 Апрель 2019, 8:26

Это, примерно, как круглое и зеленое... :-)
NamedPipes - это канал связи между приложениями, который может работать как в пределах одного компьютера, так и по сети.
Объект File Mapping - это файл в памяти, который может находиться как на локальном компьютере, так и на удаленном.
Соответственно, если у Игоря нет необходимости передавать данные по сети, то и NamedPipes ему не нужны: в пределах локальной машины все можно организовать гораздо проще...

Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 1279
Зарегистрирован: 16 Сентябрь 2005, 15:35
Откуда: Москва

NamedPipe

Сообщение Губин Игорь » 19 Апрель 2019, 12:43

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

Ответить