Inter Process Communication

sherekan Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
sherekan Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai écrit un serveur applicatif qui tourne sur un Sun Solaris. J'ai écrit un petit programme java qui se connecte a ce serveur en TCP/IP. Jusqu'à présent, ce programme envoie des requêtes au serveur. Ces requêtes sont en ascii et les paramètres sont séparés par un |. Je voudrais maintenant envoyer des requêtes contenant des données binaires (integer, float, double, byte, string de caractères, ...). Quels InputStream et OutputStream dois-je associer à mon socket. est-ce que DataInputStream et DataOutputStream peuvent convenir ? Si oui, comment insérer un string de caractères termines par un null entre des données binaires sur une certaine longueur. La plupart du temps, ce string ne dépasse pas 50 caractères. Mon message a le schéma suivant ( en c ) :
int f1;
int f2;
char f3[256];
double f4;
int f5;

Question inverse, comment récupérer mes données dans le bon ordre, dans le programme java.

Merci d'avance pour vos réponses.

Sherekan
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Tu devrais utiliser un ObjectInput/OutputStream et envoyer directement tout l'objet (en implémentant Serializable) plutôt que de faire des | qui sont une bidouille inutile en Java (et dangereuse, si tu veux mettre un | dans ton char[] )
D'ailleurs plutôt qu'un char[] tu devrais mettre un String, c'est pas du C que tu fais...
0
sherekan Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour KX,

Merci pour ta réponse, mais il y a un hic : mon server applicatif, écrit en C qui s'exécute sur une machine Sun Solaris ne saurait que faire de l'objet qu'il reçois. De plus, je ne peux pas changer le layout du message reçu par ce serveur car il est déjà utilisé par bon nombres d'applications s'exécutant sur d'autres plateformes. Je suis désolé de ne pas avoir précisé ces détails. Je ne peux donc pas appliquer ta solution qui est évidement la plus smartr

Bonne journée

Sherekan
0