/* * ChatServer.java * * Created on 8 janvier 2003, 14:08 */ package RCB1.minichat; import java.io.*; import java.net.*; import RCB1.listeclient.*; /** Le serveur qui gère les connexion des clients; Il reçoit * l'identifiant d'un client (ip,port) et l'ajoute a la liste des clients connéctés. * Quand on reçoit un message il est envoyé a tous les clients connus * @author Pascal Farès * @version 0.1 * @see ChatClient */ public class ChatServer { /** * Le port par defaut du serveur de chating */ static final int port=6010; /** Creation d'un nouvelle instance de ChatServer */ public ChatServer() { } /** * @param args Les arguments de la ligne de commande */ public static void main(String[] args) throws Exception { ListeClient lc = new ListeClient(); byte buffer[] = new byte[1024]; DatagramSocket socket = new DatagramSocket(port); /** * Ici lengthcode n'est pas encore términé il faut * Ajouter la gestion de la liste des clients * et l'envoie du message a tous les clients connu */ for(;;) { DatagramPacket packetr=new DatagramPacket(buffer,buffer.length); socket.receive(packetr); System.out.println(new String(buffer)); lc.ajouter(packetr.getAddress(), packetr.getPort()); System.out.println(lc); for (ListeClient lcn=lc; !lcn.listeVide(); lcn=lcn.suiv()) { DatagramPacket packete=new DatagramPacket(buffer,buffer.length, lcn.prem().getAddress(), lcn.prem().getPort()); socket.send(packete); } } } } ============================== /* * ChatClient.java * * Created on 8 janvier 2003, 13:19 */ package RCB1.minichat; import java.io.*; import java.net.*; /** * * @author pfares */ class GetMessage extends Thread { int port; /** * Adressse Inet du serveur de chat */ InetAddress adress; /** * Socket d'echage avec le serveur */ DatagramSocket socket; byte[] buffer; /** Le thread de lecture de la socket qui a envoyé au serveur * @param ad adresse internet serveur * @param s socket de communication avec le serveur * @param p port du serveur */ public GetMessage(InetAddress ad, DatagramSocket s, int p) { port =p; adress=ad; socket =s; buffer = new byte[1024]; start(); } /** La boucle infinie du thread */ public void run() { String line; for(;;) { try { DatagramPacket packet = new DatagramPacket(buffer, buffer.length); socket.receive(packet); line=new String(buffer); System.out.println(line); } catch (Exception e) { System.out.println(e); } } } } class GetText extends Thread { int port; /** * Adressse Inet du serveur de chat */ InetAddress adress; /** * Socket d'echage avec le serveur */ DatagramSocket socket; byte[] buffer; /** Initialisation de la lecture du clavier * @param ad adresse internet du serveur * @param s la socket de communication avec le serveur * @param p le Port du serveyr */ public GetText(InetAddress ad, DatagramSocket s, int p) { port =p; adress=ad; socket =s; buffer = new byte[1024]; start(); } /** Lecture du clavier envoi du paquet */ public void run() { String line; BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); for(;;) { try { line=br.readLine(); buffer=line.getBytes(); DatagramPacket packet = new DatagramPacket(buffer, line.length(), adress,port); socket.send(packet); } catch (Exception e) {} } } } /** La classe du client */ public class ChatClient { /** * Le port par defaut du serveur de chating */ static final int port=6010; /** * Adressse Inet du serveur de chat */ static InetAddress address; /** * Socket d'echage avec le serveur */ static DatagramSocket socket; /** Creates a new instance of ChatClient */ public ChatClient() { } /** Lancement des 2 threads lecture clavier lecture socket * @param args the command line arguments * @throws Exception Pour simplifier */ public static void main(String[] args) throws Exception { if (args.length != 1) { System.out.println("Usage: java ChatClient <adresse du serveur>"); } else { address = InetAddress.getByName(args[0]); socket = new DatagramSocket(); new GetMessage(address, socket, port); new GetText(address, socket, port); } } } =================================================================== /* * Client.java * * Created on 10 janvier 2003, 14:05 */ package RCB1.listeclient; /** * * @author pfares */ public class Client implements java.io.Serializable { private java.net.InetAddress address; private int port; /** Creates a new instance of Client */ public Client(java.net.InetAddress a, int p) { address=a; port=p; } public boolean is(java.net.InetAddress a, int p) { return (address.equals(a) && (port==p)); } public String toString() { return "("+address.getHostAddress()+":"+port+")"; } public java.net.InetAddress getAddress() { return address; } public int getPort() { return port; } } |
Programmation Réseau >