2010-11-03 2 views
2

Je travaille sur un réseau dans lequel mon script python communiquera avec mon application Java. Le script python transmet un DataPacket (juste un paquet contenant certaines chaînes et un peu d'autres données) au serveur Java pour traitement. Je sais comment emballer l'information dans un tableau d'octets, mais comment puis-je le décompacter pour être utilisé comme des chaînes? Ce que j'ai jusqu'ici est que je dois analyser les tableaux de données dans le paquet et l'envoyer en morceaux. Est-ce la seule façon de faire cela? Puis-je utiliser ByteInputStream et si oui, comment?Passer des chaînes [] comme octet []

grâce ~ Aedon

+0

Vous avez besoin d'une solution de déballage de matrice d'octets est java. Vous pouvez supprimer la balise python car elle n'est pas très pertinente ici. De plus, votre application ne doit pas dépendre de l'obtention du flux d'octets en bits et en morceaux. Ce n'est pas fiable. Cela devrait dépendre de la structure des données contenues dans le script python. – pyfunc

+0

@pyfunc: il serait pertinent de savoir comment Python conditionne les chaînes en octets. –

Répondre

1

Je ne suis pas sûr que ce que vous faites est tout à fait raison dans la mesure où vous fragmenter vos chaînes en paquets séparés. Cela pourrait causer des problèmes avec les chaînes multi-octets.

Cependant, vous pouvez vérifier ByteArrayOutputStream. Vous pouvez écrire dedans, puis convertir en une chaîne en utilisant toString(enc), où enc est l'encodage que vous avez utilisé dans votre Python pour convertir vos chaînes en octets en premier lieu. En regardant votre commentaire ci-dessous, il semble que vous ayez besoin d'un moyen de sérialiser en Python et de le désérialiser en Java. Laissant de côté des solutions comme la sérialisation XML, avez-vous regardé des solutions possibles comme Google Protocol Buffers?

+0

Merci pour la réponse, pour plus de précisions, le "paquet" que j'envoie est juste un paquet appelé class qui contient le tableau de chaînes et quelques entiers. La seule raison pour laquelle je voulais le fragmenter est que je ne suis pas sûr de la façon de convertir la classe entière en un tableau d'octets à envoyer au serveur Java. Comment puis-je utiliser Serializable passé en pour convertir la classe en octets? – AedonEtLIRA

Questions connexes