Simple udp server and client for android and get unicast message
fatemaezzahra
Messages postés1Date d'inscriptionvendredi 9 mai 2014StatutMembreDernière intervention 9 mai 2014
-
9 mai 2014 à 18:08
Whismeril
Messages postés19036Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 2 mai 2024
-
9 mai 2014 à 21:42
/**la classe ServeurChat représente la partie serveur du socket.*/ public class ServeurChat {
private static final String USAGE = "Usage: java ServeurChat";
/**Numéro de port par défaut sur ??lequel ce serveur à être exécuté. */
private static final int PORT_NUMBER = 9000;
private List<PrintWriter> clients;
/**Creer un nouveau serveur. */ public ServeurChat() {
/**LinkedList : liste doublement chaînée (parcours de la liste dans les deux sens)*/ clients = new LinkedList<PrintWriter>(); }
/** Lancer le serveur. */ public void start() { System.out.println("serveur lancer..." + PORT_NUMBER + "!"); try { /**créer une instance de la classe SocketServer en précisant le port en paramètre.*/ ServerSocket s = new ServerSocket(PORT_NUMBER);
/**définir une boucle sans fin contenant des actions.*/ for (;;) {
/**appelle de la méthode accept() qui renvoie une socket lors d'une nouvelle connexion.*/ Socket socketClient = s.accept(); new Test(socketClient).start(); } } catch (Exception e) { e.printStackTrace(); } /**si on ne peut pas lancer le serveur sur ce port, on arrete le programme*/ System.out.println("Impossible d'attendre sur le port !!"); }
/**Ajouter un nouveau client identifié par le print writer donné */ private void addClient(PrintWriter out) { synchronized(clients) { clients.add(out); } }
/* Ajouter un client par le print Writer*/ private void removeClient(PrintWriter out) { synchronized(clients) { clients.remove(out); } }
/*Broadcast des données */ private void broadcast(String msg) { for (PrintWriter out: clients) { out.println(msg); out.flush(); } }
public static void main(String[] args) { if (args.length > 0) { System.out.println(USAGE); System.exit(-1); } new ServeurChat().start(); }
/**Cette classe de recevoir des messages à partir d'un * Client et diffuse les à tous les clients, y compris le message * expéditeur. */ private class Test extends Thread {
/**Socket pour lire les messages des clients . */ private Socket socketClient;
public Test(Socket socketClient) { this.socketClient = socketClient; }
/**Commencer à recevoir et diffuser des messages. */ public void run() { PrintWriter out = null; try { out = new PrintWriter( new OutputStreamWriter(socketClient.getOutputStream()));
/**informer le serveur de ce nouveau client*/ ServeurChat.this.addClient(out);
out.println("Bienvenu dans Application chat Android! "); out.println("Entrer BYE pour exit."); out.flush(); /**Obtenir un flux en entrée et en sortie à partir de la socket.*/
BufferedReader in = new BufferedReader( new InputStreamReader(socketClient.getInputStream())); for (;;) { String msg = in.readLine(); if (msg == null) { break; } else { if (msg.trim().equals("BYE")) break; System.out.println("Reçu: " + msg);
private Handler handler = new Handler(); public ListView msgView; public ArrayAdapter<String> msgList; // public ArrayAdapter<String> msgList=new ArrayAdapter<String>(this, // android.R.layout.simple_list_item_1);;
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
msgView = (ListView) findViewById(R.id.listView);
msgList = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); msgView.setAdapter(msgList);