2 votes

Sérialisation des données en C

Je voudrais savoir comment sérialiser des données (comme des fichiers binaires) en C. Et comment envoyer ces données sérialisées sur des sockets, de sorte qu'elles puissent être reçues avec succès par le client Java correspondant.

En fait, je veux convertir ce fichier binaire en tableau d'octets pour qu'il puisse être envoyé sur les sockets.

Merci d'avance.

3voto

caf Points 114951

Pour l'interopérabilité entre C et Java, vous pouvez utiliser le logiciel Google Tampons de protocole (l'implémentation de référence de Google prend en charge C++ et Java, et il existe des implémentations tierces pour le C simple).

2voto

Syntax Points 791

Avez-vous envisagé d'utiliser un format de communication tel que JSON au lieu d'un RPC par octet brut

Pour plus d'informations sur les bibliothèques qui fournissent JSON pour C et Java (d'autres sont disponibles sur le site web JSON site)

  1. Stack Overflow sur Mise en œuvre de JSON en C :
  2. JsonGlib (Bibliothèque GNOME C JSON référencée dans le lien ci-dessus)
  3. JSON en Java

Les avantages de l'utilisation de JSON sont les suivants

  1. Indépendance linguistique
  2. Facile à analyser et à générer pour les machines
  3. Facilité de lecture et d'écriture pour l'homme (Protocol Buffers n'offre pas cette possibilité)

JSON serait idéal si vous deviez transmettre des instances d'objets. Cependant, si vous avez vraiment affaire à des fichiers binaires plats (qui ne sont pas des objets sérialisés), les Protocol Buffers de Google, comme le suggère caf, seront probablement mieux adaptés (en particulier s'il s'agit de fichiers volumineux).

NB : JSON exige que votre contenu en octets soit encodé dans une chaîne BASE64 pour le transfert.

0voto

Vanya Points 1008

Les fonctions send()/recv() en C et java.lang.Socket fonctionnent de manière transparente sur des tableaux d'octets. Ainsi, si tout ce dont vous avez besoin consiste à envoyer de simples tableaux d'octets, sans encodage spécifique à la structure, vous n'avez pas vraiment besoin de sérialisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X