как передать схему XML через сокеты? - PullRequest
0 голосов
/ 19 декабря 2009

Может ли кто-нибудь помочь и сказать мне, если есть возможность передать схему XML через программу сокетов, написанную на C ++? Вот пример:
---- C ++ ----
...

struct zone {// в качестве примера
char * Var_name = "xxx";
float var_value = 1,3;
};

----- xml ---
...
<xs:element name="zone">
<xs:complexType>
<xs:sequence>
<xs:element name="Var_name" type="xs:string"/>
<xs:element name="var_value" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>

------ C / C ++ ----
...
// отправляем сообщение на сервер
if (send (csocket, buffer_snd, BUFSIZE, 0)> BUFSIZE)
cout << отправить () не удалось << endl; <br> ...

Является ли это способом обмена данными в формате XML, чтобы избежать последовательности при взаимодействии между программой, работающей в Unix, и другой в Windows?

Заранее благодарю за ответы,

Ответы [ 2 ]

3 голосов
/ 19 декабря 2009

Все, что может быть представлено в виде последовательности байтов, может быть отправлено через сокет. Поскольку XML-схема находится в текстовой форме, она может быть представлена ​​в виде последовательности байтов. Следовательно, его можно отправить через сокет.

И, как дополнительная информация, она не только должна быть выражаемой в виде последовательности байтов, она также должна иметь какое-то осмысленное представление на другом конце провода. Следовательно, указатель на объект может быть представлен в виде последовательности байтов, и вы можете отправить его через сокет, но он не имеет смысла, когда он получен получателем. Однако XML-схема имеет смысл с обеих сторон, поэтому ее можно многократно пересылать.

Edit:

std::string s;
s = "this is the static part of the string";
s += GetSomeStringFromSomewhere(); // This is a string that was dynamically retrieved
// And so on...
2 голосов
/ 19 декабря 2009

Когда вы загрузили свой вопрос в SO, образец схемы был отправлен через сокет. Когда мы просмотрели ваш вопрос, он снова был отправлен через сокет (и обе передачи оказались успешными).

Сейчас очевидно, что код, который вы дали, не был прямым копированием и вставкой, потому что он явно не будет компилироваться точно как есть. Наша неспособность увидеть реальный код, который вы пытались использовать, является серьезным препятствием для диагностики любых проблем, которые могут быть в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...