2009-12-19 10 views
0

Quelqu'un pourrait m'aider s'il vous plaît et me dire s'il y a une possibilité de passer un schéma xml à travers un programme socket écrit en C/C++? voici un exemple:
---- c/C++ ----
...comment passer le schéma xml à travers des sockets?

zone struct {// comme exemple
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++ ----
...
// envoyer un message au serveur
if (envoyer (CSocket, buffer_snd, BUFSIZE, 0)> BUFSIZE)
Cout < < send() failed < < endl; Est-ce la manière d'échanger des données en XML pour éviter l'endianness lors de la communication entre un programme tournant sous Unix et un autre sur Windows?

vous remerciant à l'avance pour vos réponses,

+0

Pouvez-vous donner une raison pour laquelle ce n'est pas possible? – Xinus

+0

Aucune idée! pourquoi est-ce? – make

+0

Pouvez-vous expliquer exactement ce que vous essayez de faire et quelle partie ne fonctionne pas?Modifiez votre message et ajoutez le code qui vous pose problème. –

Répondre

3

Tout ce qui peut être représenté sous la forme d'une série d'octets peut être envoyé via un socket. Comme un schéma XML est sous forme textuelle, il peut être représenté comme une série d'octets. Par conséquent, il peut être envoyé via une socket.

Et en tant qu'information supplémentaire, non seulement doit-il être exprimable en tant que série d'octets, mais il doit également avoir une représentation significative à l'autre extrémité du fil. Par conséquent, un pointeur vers un objet peut être représenté comme une série d'octets, et vous pouvez l'envoyer sur un socket, mais cela n'a aucune signification quand il est reçu par le récepteur. Un schéma XML, cependant, a une signification à chaque extrémité, de sorte qu'il peut être envoyé de manière significative.

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... 
+0

merci pour votre réponse. En fait, je connais la théorie sur mais comment passer en classe/struct? – make

+0

Utilisez quelque chose appelé sérialisation. Cela dépend de votre langage de programmation. Mais pourquoi voulez-vous sérialiser une classe/struct représentant un schéma XML? Pourquoi ne pas simplement envoyer le schéma? – blwy10

+0

envoyer le schéma, comment? – make

2

Lorsque vous avez téléchargé votre question à SO, le schéma de l'échantillon a été envoyé par l'intermédiaire d'une prise. Lorsque nous avons vu votre question, elle a été envoyée via un socket (et les deux transmissions semblent avoir réussi).

À l'heure actuelle, il est évident que le code que vous avez donné n'était pas une copie directe et un collage, car il ne compilerait pas exactement tel quel. Notre incapacité à voir le vrai code que vous avez essayé d'utiliser est un handicap important dans le diagnostic des problèmes qu'il peut inclure.

+0

oui! Je sais et c'est une théorie, mais je cherche une solution. Si vous savez ... dites-moi que, comment? Merci! – make

+1

@mk: Vous devez d'abord nous dire à quel problème vous êtes confronté en transmettant le schéma XML par socket. Comme blwy10 a souligné toute donnée de tableau d'octets peut être envoyé sur socket. Il ne devrait pas y avoir de problème pour envoyer un schéma XML sur un socket, car il peut être exprimé comme un tableau de caractères. – Xinus

+0

c'est une idée. Ce serait bien si vous pouvez donner un exemple? Merci! – make

Questions connexes