2008-11-11 8 views
2

Quelle est la meilleure façon de transmettre des données entre un serveur C et une applet Java? Actuellement, cela est fait en utilisant un tampon et en y copiant des octets en utilisant memcpy, mais si l'objet change, je dois traquer chaque instance d'où il est envoyé à l'applet et le faire changer.Transmission de données de C vers Java

Existe-t-il un meilleur moyen de passer l'objet à Java? Comment le feriez-vous?

Modifier pour plus de clarté: Cela va du serveur C à l'applet Java seulement, il n'y a pas de servlet java. La seule chose que l'Applet passe au serveur C est un nombre hexadécimal signalant une action à effectuer

Répondre

4

Vous pouvez jeter un oeil à Protocol Buffers

Ils vous permettent de définir des données structurées, puis générer le code pour lire et écrire des messages dans l'une des langues prises en charge. Le seul hic, c'est que je pense qu'ils ne supportent que le C++ pour le moment, même si je sais qu'il y avait un intérêt pour l'implémentation en C.

+0

Cela semble assez simple, le serveur peut utiliser du code C++, mais il est actuellement écrit dans tous les C, j'ai l'intention de changer cela cependant. – Malfist

1

J'aurais ouvert une connexion socket entre les deux applications. Vous pouvez sérialiser l'objet sur un tableau d'octets et le déssérialiser par le servlet Java dans un objet Java avec la même valeur. De cette façon, si la définition de classe change, il suffit de changer le code à deux endroits.

1

Je voudrais sérialiser les objets soit XML ou google protobuf du côté C et les désérialiser du côté de l'applet en utilisant un seul désérialiseur. C'est à dire. ne pas avoir plus d'une classe qui fait la désérialisation. Rendre l'utilisateur que vous versionnez la sérialisation et que l'objet qui effectue la dé-sérialisation génère une exception si la version qu'il essaie de lire n'est pas rétrocompatible. Ce serait une mauvaise pratique d'avoir la sérialisation et la désérialisation dans tout le code.

+0

Cela peut ne pas être une bonne solution si les performances peuvent être un problème. Le format XML n'est pas très efficace en termes d'espace –

+0

Certains des utilisateurs de l'applet sont connectés, ce serait donc ... – Malfist

Questions connexes