Получение веб-страницы для связи с приложением C ++ - PullRequest
4 голосов
/ 18 февраля 2012

Я хочу добиться, чтобы веб-страница отправляла сообщение приложению C ++, но для этого требуется некоторая форма соединения от C ++ к веб-серверу и от веб-сервера к клиенту.

Один из способов сделать это - иметь базу данных MySQL, в которой хранится сообщение, а приложение C ++ использует libCURL для запроса веб-сервера через скрипт php о любых новых сообщениях.Это должно было бы опрашивать это каждую секунду или около того, что было бы немного напрасно.Кроме того, всякий раз, когда вы хотите отправить сообщение с веб-страницы, вы должны будете отправить форму обратно на веб-сервер, что будет медленно.

Я также смотрел на веб-сокеты HTML5, думая, что этоможет быть возможно создать TCP-соединение между клиентом и приложением C ++, но я не думаю, что именно так они и работают.Веб-сокеты предназначены для маршрутизации сообщений между двумя приложениями HTML5 через сервер, или вы теоретически могли бы использовать приложение HTML5 для прямой связи с сервером (возможно, запустить скрипт php или отправить обычный пакет TCP)?

Любыепредложения о том, как мне этого добиться, будут приветствоваться.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Если вы хотите выполнять удаленные вызовы процедур со своего веб-сайта, я бы рекомендовал взглянуть на SOAP.SOAP прекрасно работает с PHP , а с gSOAP вы можете легко встроить серверный интерфейс в ваше приложение C ++ или наоборот, если необходимо.

Если у вас есть только оченьпростые сообщения для передачи в ваше приложение, ваша идея базы данных также будет работать, но ваше приложение должно будет продолжать проверять, доступно ли новое сообщение (что означает много ненужного трафика, по крайней мере, если ваша база данных не находится нана той же машине, что и ваше приложение), и вам придется самостоятельно проверять эти проверки, придумывать модели и т. д.

SOAP, с другой стороны, отправляет ваши данные прямо в серверное приложение и обрабатывает все неприятные ситуации.такие вещи, как безопасность типов или неявная сериализация.

Вы можете найти множество документации и примеров, аккуратно объясняющих, как определяется SOAP и как он работает, из Консорциума World Wide Web .Есть также различные примеры того, как настроить ваш SOAP-сервер на C ++, в gSOAP Руководство пользователя .

2 голосов
/ 18 февраля 2012

Если вы пишете программу на C ++, вы можете просто написать ее, чтобы использовать CGI, чтобы ваш веб-сервер запускал вашу программу C ++ в качестве «сценария» для обработки соответствующих запросов http и вы напрямую выводили ответ httpиз вашей программы на C ++.

http://en.wikipedia.org/wiki/Common_Gateway_Interface

1 голос
/ 18 февраля 2012

Это не очень легко. Вы должны посмотреть на решение Google для этого:

Вызывается Cloud to Device Messaging Framework, используемый для отправки сообщений на устройства Android.

То, что вы делаете, называется толчком. Вот видео об этом из Google IO.

Просто подумайте о вашем приложении c ++ как об устройстве Android.

Ваше приложение на C ++ установит соединение с сервером через некоторый порт tcp / ip к службе, которую вы создаете, которая просто ожидает соединения. Ваше приложение сообщит серверу идентификатор пользователя, запустившего приложение, или, если оно было многоадресным, ваше приложение просто подождет, пока служба отправит ему сообщение.

Ваш веб-сервер может использовать межпроцессное взаимодействие, именованные каналы, именованные мьютексы и т. Д., Чтобы объединить службу и отправить сообщение по всем открытым соединениям TCP / IP.

...