Bonsoir à tous,
Je viens vers vous car je commence à m'arracher les cheveux.
Le contexte :
On veut créer une application client/serveur et pair à pair. Plusieurs clients participent, et possèdent des données (String A,B,C,D,E) et chacun en possède une initialement.
But : que chaque client récupère les 5 données.
Donc à un moment, je dois envoyer un paquet UDP à un autre client, pour lui demander les données qu'il me manque, mais j'obtiens une erreur récurrente :
Je comprends que mon paquet udp a un problème de taille ou d'offset... mais je n'arrive pas à le résoudre... (j'ai mis offset 0 dans le doute).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Exception in thread "Thread-1" java.lang.IllegalArgumentException: illegal length or offset at java.net.DatagramPacket.setData(DatagramPacket.java:246) at java.net.DatagramPacket.<init>(DatagramPacket.java:62) at java.net.DatagramPacket.<init>(DatagramPacket.java:78) at clientUDP.run(clientUDP.java:37)
Ci joint une partie de mon code :
Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public void run(){ // 4 bytes pour 5 valeurs byte[] recu = new byte[4]; byte[] envoye = new byte[4]; while(true){ try { //RECOIT d un i eme client DatagramPacket packet = new DatagramPacket(recu,5); this.socket.receive(packet); System.out.println("Recu de :"+ packet.getAddress() +" qui ecoute sur le port : " +packet.getPort()+" a recu : "+recu[0]+recu[1]+recu[2]+recu[3]+recu[4]);
PS : Pourtant, quelques lignes plus bas, je recrée un datagramPacket pour l'envoi et ça passe nickel...
Edit : RubberDuck... Désolé de vous avoir déranger, le problème venait du fait que je déclarais mon tableau recu en byte[4] au lieu de byte[5]... Je suis idiot.
Partager