Ce forum est maintenant fermé, seule cette archive statique reste consultable.
  FORUM Rue-Montgallet.com
  Programmation
  Java

  Client/Serveur & Socket UDP

Bas de page
Auteur Sujet :

Client/Serveur & Socket UDP

n°19889
useless
Profil : Jeune recrue
Posté le 06-06-2010 à 10:10:01  
 

Bonjour à tous et à toutes,
 
Pour mon cours de programmation (en JAVA), notre professeur nous a donné une liste de projet à réaliser, et j'ai donc choisi de programmer un NetLogon Serveur. Le serveur doit être multi-clients, donc avec l'utilisation des threads. Le client quand à lui, doit juste se connecter !
 
Voici le code du serveur (il est censé fonctionner)
Serveur.java (pour lancer le serveur)
 
package netlogonserveur;
 
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
 
public class Serveur {
    private static final int port = Protocol.PORT_NUM;
    private static final int taille = Protocol.TAILLE_PCK;
    private static byte buffer[] = new byte[taille];
 
    private static DatagramSocket socket;
    private static DatagramPacket data;
    private static Thread thread;
 
    public static void main(String[] args) {
        try{
            socket = new DatagramSocket(port);
            System.out.println("Serveur lancé sur le port "+port);
 
            System.out.println("Création de la liste de clients" );
            try{
                System.out.println("Ouverture du fichier en cours ..." );
                BufferedReader lecture = new BufferedReader(new InputStreamReader(new FileInputStream("src/fichiers/clients.txt" )));
                System.out.println("Ouverture du fichier réussie" );
                String ligne = null;
                System.out.println("Lecture des données en cours ..." );
                while((ligne = lecture.readLine()) != null){
                    String[] donnees = ligne.split(":" );
                    Client client = new Client(donnees[0],donnees[1],donnees[2],donnees[3]);
                    Client.addClient(client);
                    System.out.println("Nouvel utilisateur ajouté => id: "+donnees[0]+"; nom: "+donnees[2]);
                }
                System.out.println("Lecture des données réussie" );
                System.out.println("Fermeture du fichier en cours ..." );
                lecture.close();
                System.out.println("Fermeture du fichier réussie" );
            } catch(FileNotFoundException fnfe){
                System.err.println("Fichier introuvable !!!" );
                System.exit(1);
            } catch(IOException ioe){
                ioe.printStackTrace();
            }
 
            while(true){
                data = new DatagramPacket(buffer, taille);
                System.out.println("En attente ..." );
                try{
                    socket.receive(data);
                    System.out.println("Nouveau message reçu ..." );
 
                    thread = new Thread(new Traitement(socket,data));
                    thread.start();
                } catch(IOException ioe){
                    ioe.printStackTrace();
                }
            }
        } catch(SocketException se){
            se.printStackTrace();
            System.exit(0);
        }
    }
}
 
Traitement.java (pour faire une action précise selon le message reçu)
package netlogonserveur;
 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
 
public class Traitement implements Runnable {
    private DatagramSocket socket;
    private DatagramPacket data;
 
    public Traitement(DatagramSocket socket, DatagramPacket data){
        this.socket = socket;
        this.data = data;
    }
 
    public void run(){
        System.out.println("data : "+new String(data.getData()));
    }
}
 
Et enfin voici le code du client qui me pose problème !! Il est censé envoyer le paquet, mais le serveur le reçoit rien !! Et je ne trouve pas mon erreur, j'ai besoin de votre aide :)
Client.java
package netlogonclient;
 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
 
public class Client {
    public static void main(String[] args) throws Exception {
        InetAddress serveur = InetAddress.getByName("127.0.0.1" );
        String msg = "HELLO";
        System.out.println(serveur);
        byte buffer[] = new byte[Protocol.TAILLE_PCK];
        buffer = msg.getBytes();
        DatagramPacket data = new DatagramPacket(buffer, buffer.length, serveur, Protocol.PORT_NUM);
        DatagramSocket socket = new DatagramSocket();
        socket.send(data);
    }
}
 
Merci d'avance pour votre aide !! ;)

mood
Pub
Posté le 06-06-2010 à 10:10:01  
 

  FORUM Rue-Montgallet.com
  Programmation
  Java

  Client/Serveur & Socket UDP

© 2000-2019 Forum.rue-montgallet.com - Tous droits réservés