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 :

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)
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).

Ci joint une partie de mon code :
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]);
Merci d'avance.
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.