je suis en train de developpez une application client/serveur le serveur est en c et le client en java, je n'arrive pas a comprendre comment utiliser les socket sur java, si il y a un cour n'hesitez pas merc.rci par avance
je suis en train de developpez une application client/serveur le serveur est en c et le client en java, je n'arrive pas a comprendre comment utiliser les socket sur java, si il y a un cour n'hesitez pas merc.rci par avance
bon merci;
mais je n'ai pas mal composer ma question! la question est comment faire une communication entre java et c, j'arrive a transmetre des char et fait la lecture avec String(java) mais ce quand je veux transmetre un tableau de int ou autre variable que char le truc ne fonctionne plus
(j'ai mal composer ma question)
Tu peux montrer le bout de code qui lit sur ta socket coté java?
Le problème vient probablement de l'endian. La plupart des processeur sont dit Little Endian (comme les x86 d'Intel et AMD) alors que d'autres sont dit Big Endian (comme les PowerPC d'IBM et Motorola ). La différence vient dans la façon dont un nombre de plus de 8bit est codée en mémoire
Par exemple le nombre 0x12345678 est donc stocké en mémoire sur 4 octets :
- En big endian: 0x12, 0x34, 0x56, 0x78
- En little endian: 0x78, 0x56, 0x34, 0x12
Java devant avoir un comportement identique quel que soit le processeur, il utilise systématiquement le Big endian. Si ton programme C tourne sur un processeur Intel ou AMD comme c'est probable il te faut donc convertir le nombre de Big endian à Little Endian.
Par exemple pour un int ça serait quelque chose du genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public int changeEndian(int num) { int res; res = (num & 0x000000FF) << 24; res |= (num & 0x0000FF00) << 8; res |= (num & 0x00FF0000) >> 8; res |= (num & 0xFF000000) >> 24; return res; }
oui, merci c'exactement ça! il y a des diffirences entre le traitement des variables ! enfin j'utilise que des char parceque , c'est plsu fiable![]()
Partager