|
|
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
поправка, spinlock - это Код: pascal 1. но и с отдачей кванта тоже не вполне комильфо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 18:25 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
kep-ko, вот и я поначалу думал про такую схему. Упомянутый цикл ожидания, в общем-то и есть реализация семафора, а также особо нет смысла иметь флаги для каждого пакета. Зато проблема динамической длины пакетов встает во весь рост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 19:43 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
Василий №2...Зато проблема динамической длины пакетов встает во весь рост. Память для пакета выделяется не в буфере, в буфере - лишь заголовок, "дескриптор". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 20:11 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
Для тех, кому нужен Cromis.IPC в версии на 2013 год -- можно скачать тут со всеми исходниками (опенсорс, сайт авторов библиотеки уже давно не работает). Библиотека интересная, сам ей пользовался для асинхронного обмена между приложениями, понравилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 21:13 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
JaDi, Спасибо, утащил. Может на гитхаб кинуть? Лицензия вроде бы позволяет. Вопрос такой: вроде автор писал, что библиотека однонаправленная. Как с этим у неё? Посмотрел, что-то она немного монстроватая :) Прикрепляю простую реализацию ipc на трубах, шлёт нормально в обе стороны, можно её применять для простых случаев пересылки строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 21:38 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
JaDi, чем то напомнио Indy, такая же монструозная пофигень ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 22:45 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
Народ, используйте zmq . Одна dll и один или два библиотечных .pas-файлов. Вот, простой эхо-сервер, читает сообщения и отправляет их обратно: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Клиент такой же простой, только вместо Bind() используется Connect, и сперва Send() - потом Recv()... Скорость, масштабируемость, автоматическое восстановление связи при обрыве, атомарность при доставке сообщений, составные сообщения произвольного формата, управляемые очереди, синхронный и асинхронный режим, поддержка кучи протоколов, куча режимов работы сокетов, биндинг из любого ЯП, офигительных размеров комьюнити, мощная поддержка & бесплатность, опенсорс, непрерывное развитие, документация и книги ... Из недостатков: конкретно у меня, .pas - файлы сделаны для неюникодной Delphi, но тут доделать совсем легко, кому нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 00:12 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
Василий №2нет смысла иметь флаги для каждого пакета это если максимальная длина очереди только в один пакет или подготовка следующего зависит от результатов обработки предыдущего. В таком случае кошернее слить функционал в один процесс-поток. И о циклах я не говорил, говорил о кольцевом буфере с признаком постановки/завершения обработки каждого следующего пакета. А если уж в буфере нет обработанных то, Arioch , с отдачей кванта тоже вполне комильфо Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 01:19 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
JaDi, на вкладке NEwest - последний вопрос от 2016 года и все остальны - 2014 и раньше. завязал с программированием, вероятно. https://stackoverflow.com/users/118765/runner А тут, что любопытно, он указан автором коммерческих библиотек https://torry.net/authorsmore.php?id=7711 На гитхабе тоже встерчается, типа https://github.com/digitalfrontiersireland/digital-frontiers-ireland/tree/master/packages/3rdparty/Cromis makhaonавтор писал, что библиотека однонаправленная Ну а как иначе, это же обертка поверх Named Pipes, что они умеют - то и на высоком уровне умеет библиотека. А чего в принципе в трубах нет - того и там нет. https://stackoverflow.com/a/9748495 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 12:47 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
чччДтолько вместо Bind() используется Connect, и сперва Send() - потом Recv()... ну и на фига для локального протокола использовать сетевый TCP-протоколы? конечно вроде в windows 8.1 появилась "упрощенка" и можно надеяться, что ее ZMQ умее тиспользовать, но - зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 12:48 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
AriochчччДтолько вместо Bind() используется Connect, и сперва Send() - потом Recv()... ну и на фига для локального протокола использовать сетевый TCP-протоколы? конечно вроде в windows 8.1 появилась "упрощенка" и можно надеяться, что ее ZMQ умее тиспользовать, но - зачем? Шта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:51 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
Cromis есть на гитхабе, но только в 3rd party. Причем есть куча всяких модулей от автора разной степени полезности. Трубы по определению однонаправленные. Любая двунаправленная реализация - это две трубы. В принципе, ничего сложного: первым делом клиент шлет серверу имя своей собственной слушающей трубы, сервер ее открывает - и вот вам дуплекс. Ariochну и на фига для локального протокола использовать сетевый TCP-протоколы? Зато масштабируется хорошо. А если способ обмена - какой-нибудь из стандартных типа упомянутой zeromq, то и переписывание одного из приложений на другую платформу и даже язык пройдет намного легче. Жаль, что реализация только в виде dll. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 14:49 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
Для ZMQ есть ipc взаимодействие, основанное и на пайпах. В "строке соединения" вместо "tcp://127.0.0.1:5555" указываешь что-нибудь вроде "ipc:///tmp/feeds/0" - и все, внутри одной машины обмен поверх named pipes. А если нужен обмен в рамках одного приложения (между потоками, например) - то префикс протокола "inproc". Очень удобно разрабатывать и отлаживать сетевую архитектуру: меняешь лишь строку коннекта, и трассируешь обмен между потоками, а когда отладил - меняешь протокол с inproc на ipc или tcp или еще на что. Правда, для Windows ipc поверх пайпов в ZMQ только недавно появилось, и не особо пока популярно, ибо не дает никакого преимущества, кроме "экономии" на выделенном порте tcp... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 15:08 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
чччД, Прочитал всю ленту в треде, ну так лучший то вариант какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2018, 22:12 |
|
||
|
Общение между приложениями на одном компьютере
|
|||
|---|---|---|---|
|
#18+
NukerчччД, Прочитал всю ленту в треде, ну так лучший то вариант какой? Ну конечно же Indy, что же еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2018, 01:38 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39595273&tid=2041237]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
166ms |
get topic data: |
17ms |
get forum data: |
6ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 518ms |

| 0 / 0 |
