Salut,
Je veux envoyer un int[] avec des datagrammes UDP. J'ai procédé de la manière suivante, je fais comme ça pour transformer ma Matrice en byte[]
Ensuite je l'envoie avec la méthode send de DatagramPacket et de l'autre côté je récupère ce byte[] avec le getData (normal on me dira) pis pour convertir mon byte[] en object je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public byte[] objectToByte(Object o) throws IOException{ ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(o); oos.flush(); oos.close(); bos.close(); byte [] data = bos.toByteArray(); return data; }
Pis après je caste mon Object en int[] pour retrouver ma matrice de départ. Mais dès que je veux l'utiliser, ça me sort un "java.lang.NullPointerException"... Je ne comprends pas ce qui se passe! Le seul truc que j'ai pu trouver c'est que mon int[] fait une taille de plus après l'envoie, comme si des bytes avait été rajouté lors de l'envoie (du coups ca foire quand je convertit mes byte[] en object je pense..).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static Object byteToObject(byte[] bytes){ Object object = null; try{ object = new ObjectInputStream(new ByteArrayInputStream(bytes)).readObject(); } catch(java.io.IOException ioe){System.out.println("Erreur de IO");} catch(java.lang.ClassNotFoundException cnfe){System.out.println("Erreur de classe");} return object; }
Si quelqu'un a une idée, merci d'avance!
PS. J'ai testé mes fonctions de conversions sans envoyer de données et ça fonctionne très bien donc le problème ne vient pas de celles-ci !
Partager