Client/Serveur UDP
Résolu
L'as91
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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:
Code Client:
Aidez-moi svp ! ! ! :'(
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 ! ! ! :'(
A voir également:
- Client/Serveur UDP
- Tcp udp - Guide
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Changer serveur dns - Guide
- Filezilla client - Télécharger - Téléchargement & Transfert
- Filezilla client ou serveur ✓ - Forum Réseau
1 réponse
Bonsoir,
Il faut apprendre à lire une exception.
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
Le seul accès à un tableau sur cette ligne est
Tu devrais regarder Command-Line Arguments.
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
: 0dans l'exception. Cela signifie donc que argv est vide, il est de taille 0.
Tu devrais regarder Command-Line Arguments.