Я пишу два приложения litle C++, которые должны общаться. Сначала это будет услуга, которая время от времени должна предупредить пользователя о чем-то. Поскольку служба не может создавать окна, я разработал приложение как два отдельных исполняемых файла.Коммуникация труб C++
Служба будет использовать уведомитель для связи.
Служба должна только отправлять текстовые сообщения уведомителю, который будет отображать воздушный шар на панели задач.
Я пытаюсь использовать именованные каналы, и я думаю, что я почти там, но не совсем там. То, что я до сих пор:
На стороне уведомителя:
m_hInPipe = CreateNamedPipe(L"\\\\.\\pipe\\nhsupspipe", PIPE_ACCESS_INBOUND,
PIPE_WAIT, 1, 1024, 1024, 60, NULL);
Значение Я создал трубы по имени nhsupspipe, входящей трубы.
На стороне службы:
if (!WriteFile(m_hOutPipe, "My message to the user?", 23, &escritos, &o))
std::cout << "ERROR: " << GetLastError();
Debugging я могу видеть, что все это хорошо, труба создается и WriteFile записывает мои 23 байт в трубу.
Мой вопрос: как, в стороне уведомления, я смогу прочитать эти байты? Есть ли сообщение, отправленное в процесс? Должен ли я писать обработчик для трубы? Что-нибудь?
вы можете рассказать, как реализовать сервер и клиент в одном проекте в VS (C++)? – kushpf
@k_programmer Если вы хотите, чтобы в одном процессе вам нужно было использовать отдельные потоки для сервера и клиента или использовать ReadFileEx & WriteFileEx. Попробуйте реализовать решение, и если у вас есть проблемы, спросите здесь. –
Спасибо за ответ. Я понял, как реализовать сервер и клиент в одном потоке. Кажется странным, но я сделал это как-то, и теперь он работает нормально :) – kushpf