Как добавить веб-сервисы как слой поверх сокетов, написанных на C / C ++? - PullRequest
0 голосов
/ 20 декабря 2009

Можно ли обмениваться веб-сервисами через сокет-программы, написанные на C / C ++?

Данные для обмена находятся в сообщении от xml / soap.

Ответы [ 5 ]

1 голос
/ 20 декабря 2009

Если вы используете веб-сервисы, вы потратите больше времени на написание кода сокета, чем на написание кода для использования веб-сервисов.

Если это веб-сервисы SOAP, используйте gSoap (http://www.cs.fsu.edu/~engelen/soap.html). Если это что-то вроде веб-сервисов REST или простого обмена данными по HTTP-сообщению без всего протокола SOAP, libcurl (http://curl.haxx.se/) прост в использовании.

Обе библиотеки будут работать в Windows и Linux.

1 голос
/ 20 декабря 2009

Проще говоря, да. Я полагаю, что вы, вероятно, хотите больше подробностей, чем просто «да», но вопрос слишком общий, чтобы получить более конкретный ответ.

Вы упоминаете UDP и даже необработанные сокеты, но мне не понятно почему. «Веб-сервисами» обычно являются HTTP, что означает, что они используют TCP.

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

1 голос
/ 20 декабря 2009
1 голос
/ 20 декабря 2009

Да, это возможно. Вы можете написать код, который использует стандартные сокеты POSIX, так что он будет переносимым между окнами и Unix-подобными операционными системами. Но вы, скорее всего, захотите создать несколько уровней абстракции, чтобы упростить себе задачу, или использовать существующую библиотеку.

Что касается общения с веб-сервисами, вам понадобится какой-то XML / Json / любой другой парсер. SAX - хороший синтаксический анализатор XML, и я уверен, что для этого есть C-интерфейс. Но все зависит от формата данных.

0 голосов
/ 20 декабря 2009

Может быть, вы хотите попробовать CGI ? С его помощью можно создать веб-сайт на C ++, не беспокоясь о сокетах. Ваш скомпилированный исполняемый файл будет выполняться веб-сервером каждый раз, когда запрашивается страница, а выходные данные указанного исполняемого файла будут отправляться веб-браузерам.

Так что вы можете делать такие вещи, как cout << "<html>";.

[Я знаю, что это не совсем то, что вы спросили, но ваш вопрос не очень ясен, и я не хотел повторять что-то уже сказанное!]

...