
 Envoyé par 
dinobogan
					
				 
				Ton serveur réceptionne un message, puis le retourne au client. Et quel est l'instruction suivante ? Il n'y en a pas. Donc le serveur s'arrête, c'est normal.
Tu dois faire une boucle (while par exemple, à toi de déterminer la condition d'arrêt) dans laquelle le serveur va recevoir et envoyer les messages.
			
		 
	 
 Salut,
J'ai modifié le code précédent et le résultat est le suivant :
La classe ServeurUDP.java 
	
	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
   | //package package_UDP;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
 
public class ServeurUDP {
 
        static int hostport = 8532;
        static String hostname = "localhost";
        static byte[] buffer ;
 
 
	public static void envoi (String hostname, int hostport, byte[] buffer){
		try{
			InetAddress host_address = InetAddress.getByName(hostname);
			DatagramSocket socket = new DatagramSocket();
			DatagramPacket paquet = new DatagramPacket(buffer, buffer.length,host_address,hostport);
			socket.send(paquet);
		}catch(Exception e){
		    System.err.println("Erreur: "+e);
		}
 
	}
 
        static public DatagramPacket reception (int hostport){
                try{
			DatagramSocket socket = new DatagramSocket(hostport);
                       // while(true){
                        DatagramPacket paquet = new DatagramPacket(new byte[512],512);
                        socket.receive(paquet);
                        System.out.println("Addresse Serveur:"+ paquet.getAddress());
                        System.out.println("Donnees recues :"+ new String(paquet.getData()));
                        return paquet;
                       //}
                        }catch(Exception e){
			System.err.println("Erreur: "+e);
                        return null;
                }
 
        }
 
    /*    static public void reception (int hostport){
                try{
			DatagramSocket socket = new DatagramSocket(hostport);
                        while(true){
                        DatagramPacket paquet = new DatagramPacket(new byte[512],512);
                        socket.receive(paquet);
                        System.out.println("Contenu du paquet Addresse Serveur:"+ paquet.getAddress());
                        System.out.println("Contenu du paquet Donnees:"+ new String(paquet.getData()));
                        }
                      }catch(Exception e){
			System.err.println("Erreur: "+e);
                     }
 
        } */ 
 
 
	public static void main(String[] args) throws IOException{
 
        while(true){
        //Reception du paquet
        DatagramPacket paquet = reception(hostport); //pb:recupration du paquet pour le renvoyer au clientle serveur s arrete apres la first reception
 
        //reception(hostport);
 
        //envoi du paquet
        hostname = paquet.getAddress().getHostAddress();
        hostport = paquet.getPort();
        buffer = paquet.getData();
        envoi(hostname,hostport,buffer);
        }
     }
   } | 
 La classe ClientUDP.java
	
	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
   | //package package_UDP;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
 
public class ServeurUDP {
 
        static int hostport = 8532;
        static String hostname = "localhost";
        static byte[] buffer ;
 
 
	public static void envoi (String hostname, int hostport, byte[] buffer){
		try{
			InetAddress host_address = InetAddress.getByName(hostname);
			DatagramSocket socket = new DatagramSocket();
			DatagramPacket paquet = new DatagramPacket(buffer, buffer.length,host_address,hostport);
			socket.send(paquet);
		}catch(Exception e){
		    System.err.println("Erreur: "+e);
		}
 
	}
 
        static public DatagramPacket reception (int hostport){
                try{
			DatagramSocket socket = new DatagramSocket(hostport);
                       // while(true){
                        DatagramPacket paquet = new DatagramPacket(new byte[512],512);
                        socket.receive(paquet);
                        System.out.println("Addresse Serveur:"+ paquet.getAddress());
                        System.out.println("Donnees recues :"+ new String(paquet.getData()));
                        return paquet;
                       //}
                        }catch(Exception e){
			System.err.println("Erreur: "+e);
                        return null;
                }
 
        }
 
    /*    static public void reception (int hostport){
                try{
			DatagramSocket socket = new DatagramSocket(hostport);
                        while(true){
                        DatagramPacket paquet = new DatagramPacket(new byte[512],512);
                        socket.receive(paquet);
                        System.out.println("Contenu du paquet Addresse Serveur:"+ paquet.getAddress());
                        System.out.println("Contenu du paquet Donnees:"+ new String(paquet.getData()));
                        }
                      }catch(Exception e){
			System.err.println("Erreur: "+e);
                     }
 
        } */ 
 
 
	public static void main(String[] args) throws IOException{
 
        while(true){
        //Reception du paquet
        DatagramPacket paquet = reception(hostport); //pb:recupration du paquet pour le renvoyer au clientle serveur s arrete apres la first reception
 
        //reception(hostport);
 
        //envoi du paquet
        hostname = paquet.getAddress().getHostAddress();
        hostport = paquet.getPort();
        buffer = paquet.getData();
        envoi(hostname,hostport,buffer);
        }
     }
   } | 
 Seulement lorsque j'exécute, la première itération se passe plus ou moins bien (l'envoi des données du serveur vers le client n'est pas effectué). L'erreur suivante se produit 
	
	Erreur:java.net.BindException: Address already in use : cannot bind Exception in thread "main" java.lang.NullPointerException at ServeurUDP.main(ServeurUDP.java:71
 Par la suite le serveur s'arrête.
Merci beaucoup d'avance pour votre aide
						
					
Partager