0% found this document useful (0 votes)
12 views3 pages

Sockets MultiThread LIste Clients (BufferReaderWriter)

Uploaded by

mohammednapoli0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views3 pages

Sockets MultiThread LIste Clients (BufferReaderWriter)

Uploaded by

mohammednapoli0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

package thrServ;

import java.io.IOException;

import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class ServeurMultiThread extends Thread {

private int Numero=0;

public static List <String> listeClientsConnectes = new ArrayList<String>();

public static void AddClientListe(int NumClient) {


listeClientsConnectes.add("Client_"+String.valueOf(NumClient));
}

public static void removeClientListe(int NumClient ) {


listeClientsConnectes.remove("Client_"+String.valueOf(NumClient));
}

public static String PrintListeClients(List<String>listeClientsConnectes) {

var iterator = listeClientsConnectes.iterator();


String ListeClients="";
while(iterator.hasNext()) {
ListeClients+=iterator.next()+" ";
}
return ListeClients;
}

Socket socket = null;

ServerSocket servSocket =null;

public void run() {

try {
servSocket = new ServerSocket(1238);
System.out.println("Ecoute sur le Port ...");
while(true) {
System.out.println("En Attente de Nouveaux Clients");
socket=servSocket.accept();
++Numero;
System.out.println("Client [" +Numero+ "] Connecté");
Echange ech=new Echange(socket,Numero);
ech.start();
}
} catch (IOException e) {e.printStackTrace();}

}// RUN Serveur Multi Thread


///////////////////////////////////

public static void main(String[] args) {

ServeurMultiThread S1= new ServeurMultiThread();


S1.start();
}// Main Serveur Multi Thread
} // Class
package thrServ;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class Echange extends Thread {

public Socket sClient;


private int numClient;
private String listeActuelle;

public Echange(Socket socketClient,int monNumero) {


super();
this.sClient=socketClient;
this.numClient=monNumero;
}
InputStreamReader inpStrReader=null;
BufferedReader buffReader=null;
OutputStreamWriter outStrWriter=null;
BufferedWriter buffWriter=null;

public void run() {


ServeurMultiThread.AddClientListe(this.numClient);
listeActuelle = ServeurMultiThread.PrintListeClients(ServeurMultiThread.listeClientsConnectes);
System.out.println("Current Clients :"+listeActuelle);
try {
inpStrReader = new InputStreamReader(sClient.getInputStream());
buffReader =new BufferedReader(inpStrReader);
outStrWriter = new OutputStreamWriter(sClient.getOutputStream());
buffWriter = new BufferedWriter(outStrWriter);

String msgFromClient;
String toSend, Message;
while(true) {
toSend=ServeurMultiThread.PrintListeClients(ServeurMultiThread.listeClientsConnectes);
msgFromClient = buffReader.readLine();
System.out.println("Client("+numClient +") sent : "+msgFromClient);
toSend=ServeurMultiThread.PrintListeClients(ServeurMultiThread.listeClientsConnectes);
if(msgFromClient.equalsIgnoreCase("Fin") ) {
System.out.println("Fin du Client["+numClient+"]");
ServeurMultiThread.removeClientListe(this.numClient);
listeActuelle=ServeurMultiThread.PrintListeClients(ServeurMultiThread.listeClientsConnectes);
System.out.println("Current Clients :"+listeActuelle);
break;
}
else {
if(!msgFromClient.equals("L")) Message="Message :"+msgFromClient+"du Client
("+numClient+")";
else Message="LISTE:"+toSend.toString()+"Envoyée au Client"+this.numClient;
buffWriter.write(Message);
buffWriter.newLine();
buffWriter.flush();
}
}// WHILE
} catch (IOException e) { e.printStackTrace(); }
finally {
try{ if(sClient!=null) sClient.close(); if(inpStrReader!=null) inpStrReader.close();
if(buffReader!=null) buffReader.close(); if(outStrWriter!=null) outStrWriter.close();
if(buffWriter!=null) buffWriter.close(); } catch(IOException e) {e.printStackTrace();}
}
} // RUN
} // class
import java.io.BufferedReader;
import java.io.BufferedWriter;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

public class Client {


public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub

Socket socket = null;

InputStreamReader inpStrReader = null;


OutputStreamWriter outStrWriter =null;
BufferedReader buffReader = null;
BufferedWriter buffWriter = null;

try {
socket = new Socket("localhost",1238);
inpStrReader=new InputStreamReader(socket.getInputStream());
buffReader = new BufferedReader(inpStrReader);
outStrWriter = new OutputStreamWriter(socket.getOutputStream());
buffWriter = new BufferedWriter(outStrWriter);
Scanner Clavier = new Scanner(System.in);

String msgToSend;

while(true) {
msgToSend=Clavier.nextLine();
System.out.println("J'ai Envoye"+msgToSend);
int nbrToSend=0;
if(msgToSend.equalsIgnoreCase("FIN")||msgToSend.equalsIgnoreCase("L"))
{
buffWriter.write(msgToSend);
buffWriter.newLine();
buffWriter.flush();
if(msgToSend.equalsIgnoreCase("FIN")) {Clavier.close();break;}
else System.out.println("(Réponse du L --> "+buffReader.readLine());
}
else{
nbrToSend= Integer.parseInt(msgToSend);
for(int i=0;i<nbrToSend;i++) {
Thread.sleep(500);
buffWriter.write(String.valueOf(i));
buffWriter.newLine();
buffWriter.flush();
System.out.println("Reponse Serveur :"+buffReader.readLine());
}
}
}// WHILE TRUE
} catch(IOException e) {e.printStackTrace();}
finally {
try{
if(socket!=null) socket.close();
if(inpStrReader!=null) inpStrReader.close();
if(buffReader!=null) buffReader.close();
if(outStrWriter!=null) outStrWriter.close();
if(buffWriter!=null) buffWriter.close();
} catch(IOException e) {e.printStackTrace();}
}
}// MAIN
}// Class

You might also like