Client/Serveur UDP

Résolu/Fermé
L'as91 Messages postés 2 Date d'inscription samedi 8 février 2014 Statut Membre Dernière intervention 19 octobre 2014 - Modifié par KX le 19/10/2014 à 22:25
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 19 oct. 2014 à 22:34
Salut !
J'ai un problème avec mon programme client/serveur UDP en Java. Le serveur s'exécute normalement par contre le client m'affiche le message suivant :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at ClientEcho.main(ClientEcho.java:11)

Pourtant j'ai utilisé la même taille de paquet pour les deux entités. Ci-dessous les codes de chaque entité:

Code Serveur:

import java.io.*;
import java.net.*;

class ServeurEcho
{
 final static int port = 8532;
 final static int taille = 1024;
 final static byte buffer[] = new byte[taille];

 public static void main(String argv[]) throws Exception
 {
 DatagramSocket socket = new DatagramSocket(port);
 while(true)
 {
 DatagramPacket data = new DatagramPacket(buffer,buffer.length);
 socket.receive(data);
 System.out.println(data.getAddress());
 socket.send(data);
 } } }


Code Client:

import java.io.*; 
import java.net.*;

public class ClientEcho
{
 final static int taille = 1024;
 final static byte buffer[] = new byte[taille];

 public static void main(String argv[]) throws Exception
 {
 InetAddress serveur = InetAddress.getByName(argv[0]);
 int length = argv[1].length();
 byte buffer[] = argv[1].getBytes();
 DatagramPacket dataSent = new DatagramPacket(buffer,length,serveur,ServeurEcho.port);
 DatagramSocket socket = new DatagramSocket();

 socket.send(dataSent);

 DatagramPacket dataRecieved = new DatagramPacket(new byte[length],length);
 socket.receive(dataRecieved);
 System.out.println("Data recieved : " + new String(dataRecieved.getData()));
 System.out.println("From : " + dataRecieved.getAddress() + ":" + dataRecieved.getPort());
 }
}


Aidez-moi svp ! ! ! :'(

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
19 oct. 2014 à 22:34
Bonsoir,

Il faut apprendre à lire une exception.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 
at ClientEcho.main(ClientEcho.java:11)

Si tu ne sais pas ce qu'est une ArrayIndexOutOfBoundsException il faut regarder dans la documentation : java.lang.ArrayIndexOutOfBoundsException

Comme indiqué, l'erreur est ligne 11 de CientEcho.java
InetAddress serveur = InetAddress.getByName(argv[0]);

Le seul accès à un tableau sur cette ligne est
argv[0]
, ce qui est corroboré par le message
: 0 
dans l'exception. Cela signifie donc que argv est vide, il est de taille 0.

Tu devrais regarder Command-Line Arguments.
1