буфера для записи и буфера для чтения, куда каждый из пары клиент/сервер, могут писать что угодно, а по изменению данных на другой стороне дёргается флаг он чендждата? Ну это если сильно упростить
Смотря в какой ос, но примерно да. А зачем тебе пайпы? В Винде бывают именованные, анонимные...но если тебе для коммуникации между процессами, то есть способы проще
Вообще, это потоки. Типа стандартных, это частность, STDIN, STDOUT, STDERR. Можно их законнектить, и узнавать, есть ли что в потоке. Но можно, абстрактно, рассмотреть их и как описал.
Мне не надо способ проще. Мне надо работать со всратыми приложениями, которые общаются через пайпы. Подозреваю, что есть способ выкинуть эти приложения и работать с драйвером юсб напрямую, но до юсб я пока не дорос =(
Ну тогда тебе курить: https://learn.microsoft.com/ru-ru/windows/win32/ipc/named-pipes , https://learn.microsoft.com/ru-ru/windows/win32/ipc/anonymous-pipes
Я прост не понимаю, почему такие сложные примеры работы с ними. Нашёл в интернетах их три, или четыре, разной степени всратости. Пока самый простой это от @rouse_79 2005 чтоли года выпуска, работаю над ним.
Это я покурил, тоже вроде просто всё. Но всратость примеров, которые переводились с этих статей на паскаль, поражает.
Ну вот более простые: https://github.com/peter-bloomfield/win32-named-pipes-example/tree/master/src
вот, да, на сях как-то вообще всё просто
Эм? Ну на дельфях тоже самое:/
У Багеля есть норм статья и модули, есть и другие варианты. Implementing Windows Anonymous Pipe Into Class.CodeCall Inter Process Communication Using Pipes.Behind IPC with Named Pipes.CodeProject Multithreading - The Delphi way Named Pipe, Vista, Seven and Service.Synopse NamedPipe - кривые руки или чмошный MS.rsdn names.AlexK names.RIT names.Russel names.WilSonc nPipe.theunknownones part.RemObjects part.wyUpdate.CS.GoogleCode Performance Monitoring and Building an HTTP Gateway Server services.Savatzki StdIn-StdOut This Old Pipe.C names.Cromis IPC.From Zero To One именнованые каналы, CallNamedPipe.rsdn Пример исп-я Private Object Security в D Что такое Named Pipes и как с ними бороться.Мастера Delphi outlook.theDelphiMagazine.62.zip Using PIPES for messages.txt
Не понимаю, почему клиент и сервер все стараются запихать в один файл и одну программу. Пле, я ж то же самое щас делаю...
Вообще не обязательно. Но все же фреймворки пишут. 😊 Если раньше была поговорка, что "любая программа развивается до работы с электронной почтой"... как-то так... То перефразируя... "любой программист (Delphi) развивается до написания своего фреймворка"
https://pastebin.com/E9TKuycq - вот перекинутый на Delphi вариант, на скорую руку
Проблема лишь в том, что фреймворкописатели настолько оторваны от начинающих, что их примеры становятся бесполезными для понимания сути работы. Хорошо, когда пример показывает, как работать с конкретной задачей, а не то, как виртуозно примерописатель управляется с указателями, классами классов и массивами массивов. И проверок побольше.
Строго говоря, это не клиент сервер. А скорее общий доступ к файлу, который может работать как только в один конец, так и в оба
ну, грубо говоря, есть ведь создатель пайпа, а есть один/много тех, кто этот канал юзает. По аналогии с сетью, это больше клиент-серверная концепция. Мне, чтобы отреверсить и обойти одну из ненужных цепочек между мной и железкой, с которой общаюсь, нужно создать клиента, который будет подключаться к существующему пайпу, дабы понять, как проходит подключение и сервера, который будет эмулировать настоящий сервер, для вытягивания из ненужной прослойки команд, которыми она оперирует.
@CynicRus В современных реалиях, применение Pipe(как и MailSlots) ограниченное. Pipe сейчас, в основном, но не всегда, используют при работе все с теми же STDIN, STDOUT, STDERR.
И да, классно и просто использовать их в процессах.
Ну дык этож как применишь, для ipc вполне, не хуже иных способов что нынче модно. С юниксовых же пайпов взято, и не ного допилено
Первое сообщение на rsdn 😊 http://rsdn.org/forum/winapi/200054
а как узнать, какие в системе существуют пайпы? Нашёл программу, но она юзает какие-то либы, которые детектятся как вирус
Вроде от руссиновича показывает пайпы Или SystemInformer (бывш. ProcessHacker)
Да, SysInternals покажет
Ты если про мою вот эту демку https://rouse.drkb.ru/network.php#fwiocompletionpipe То учти - она изначально была разработана и вообще использовалась в принципе как канал общения между клиентским софтом и серверной службой (причем именно винапишной, а не VCL-ной). За качество я ручаюсь ибо много лет этот код проработал и сбоев с ним не было. Она поэтому так и реализована что со стороны сервера аё активируешь и висишь на этой точке, пока не остановишь. Т.е. это было так разработано специально.
В Лазаре на разных ОС что юзают для общения между процессами?
Когда кажется, что что-то сделано по-идотски идиотами, есть нехилый шанс, что на самом деле что-то не до конца понял из-за не владения контекстом сам читатель.
А какая разница? В общем случае, сокеты самый универсальный вариант. Нужно больше вводных. Взаимодействие через сеть предполагается? Какой уровень абстракции? Зависимости допускаются? К тому, мб DBus будет простым и понятным выбором? Н-р.
Это я про эту демку... И это... Breadcrumb control доделал бы... Без привязки к FS. 😘
Работа только на локальной машине, зависимости допускаются (нужно чтобы процесс отправлял сигнал другому и замораживался до получения ответа)
А ограничения по платформам? К тому, что сейчас, всякие MQ в фаворе. MQTT Легонький и простой/понятный. xNix - DBus. На низком уровне - Memory Mapped File.
Не, его доделывать не буду - он архитектурно не удачный и бесперспективно что-то там исправлять, тот который сейчас используется он совершенно другой, но выполнен уже с привязкой к нашему внутреннему коду и его просто выложить не могу.
Ах тыж ленивая...а это не оффтоп, упс.
Ну там реально его целиком с нуля переписывать, а у меня на это времени нет т.к. сейчас все свободное время отдано под CPU-View
Алексей, к слову, ты свой фреймворк тоже писал? Как минимум, по твоим выкладкам готовых компонентов и решений на любую тему могу предположить, что ты был где-то рядом :)
Почему? Пайпы, посмотри в FPC в пакетах fcl-process
пайпы на основе TCP вполне могут существовать и речь не про IPC, а межмашинный обмен
Общение между процессами (а именно про это речь идет в изначальном сообщении) это IPC :) Через TCP тоже можно, но зачем?
Не страшно, я задаю вопросы за несколько часов до того, как дохожу до компа)
Конечно ;-). Я решал задачи. И в силу выраженного системного подхода изучал темы до уровня приемлемого решения. Не идеального, но достаточного для решения задачи. Как-то так, по скромному. 😁
👍 А осталось что-то оформленное в виде фреймворка для потомков?
Так оно всё под NDA.
Это настолько неблагодарное занятие...что...
Своих выгод в этом тоже масса, важно баланс найти. Мы свой фреймворк оформляем например, сильно помогает. @nikron79 тоже свой пилит, недавно встречались, делились опытом. Тема вообще захватывающая, интересен опыт других. Но это наверное тема больше для оффтопа
Да, она. Сервер удалось поднять, подключается принимает, данные показывает. Правда, он данные не умеет передавать, если его клиент не дёргает. Клиента тоже сделал. Отправку данных прикрутил. Но у него другая проблема - он наоборот, входящих данных не видит, если сам их не запрашивает. Короче, сижу, прикручиваю отправку серверу и прием клиенту. Но у тебя хотябы понятно, что надо делать. В других примерах, что попадались, вообще жесть.
Бро, я некоторое количество лет сисадминил венду. Меня сложно убедить в том, что настройки, например, сети и домена, делались умными людьми и их просто не поняли.
Если нужно чтобы в обе стороны работало то второй сервер поднимается со стороны клиента, ибо тут вся концепция строго на вопрос-ответ построена со стороны клиента.
Любой фреймворк накладывает ограничения. Чем более он заточен на конкретные задачи, тем больше эти ограничения. И ответственность большая. И ограничения тебя в решениях. Я потому и в 1С не пошел, хотя сам Сергей Нуралиев оффер выписал в 2006 😉. Испугался на тот момент ответственности, если по чесноку. Постоянно тащат на руководящие должности, а это другое, там политики много.
А вот если я хочу в другой комп через пайп, то это как работает с точки зрения сети? Нужно порт открывать какой-то?
Тебе же сказали. Pipe в одну сторону работает.
Пайпы на 137, 139 и 445 -ых портах работают, полее подробней в доке поищи я уже на память не помню что за что отвечает
пайп - это общее понятие, сделать его можно через любой порт (а то, что ты перечислил, по памяти - вроде почтовые сервисы)
я про виндовый пайп, там насколько я помню нет возможности настройки портов т.к. этим винда рулит, локально то они вообще через MMF работают а не на лупбэке
То есть это вот прям их обычная работа? Не тупо поднял сервер, и болтаешь с клиентами, а поднял, ждёшь запроса, ответил , получил подтверждение ответа и закрыл связь, в ожидании следующего запроса?
Не ну почему, технически можно сделать (наверное) чтобы и сервер был инициатором и клиент, но я не эксперементировал в этом направлении
Винда предназначена для бизнеса, чтобы трудоустроить множество людей и брать деньги за то, что эти люди машут веслами. Если сделать полный сетевой plug-n-play (как в netware или ранних яблоках), то много образованных людей останется без высокооплачиваемой работы, а это неприемлемо.
Макоюзеры говорят, что в маках всё для людей. Там реально разработчики думали как сделать работу удобной. Я маками не пользовался, только айфон был некоторое время. Но я чото им верю всё равно. А венды и циски, походу разрабатывали люди с альтернативным мышлением.
@Serjone123 Вот кстати да. Хотел упомянуть, но не счёл нужным. Pipe это старая абстракция/схема взаимодействия. Получается, по факту, что локально, это будет MMF, а по сети Socket.
После знакомства с их Objective-C я их понимаю, ибо лично я не готов настолько деградировать :)
Даже FPC был вынужден ввести его синтаксис, чтобы обеспечить доступ к системе)
Тыж говорил что читал доку. Канал то ты создал какой, однонаправленный, двунаправленный? Именованный, не именованный?))
Оно депрекатед. Они вернулись к истокам, относительно в Swift. Изначально, до ухода Джобса, там много на Pascal писали.
Справедливости ради, в swift они исправились, вполне годно😀
Это я в курсе, собственно когда руки дойдут я только его и рассматриваю для использования.
Но Лазарь все равно лучше, формошлепку в xcode шизофреник проектировал😄
Именованный. Судя по всему, двухсторонний
SMB https://ru.wikipedia.org/wiki/Server_Message_Block SAMBA -- оно же под *nix
Как то сел за мак и плевался блевался, какое же это убожество и калека.
потому что это гнилой кактус, но в красивой обёртке
Обсуждают сегодня