X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=TD2%2Fclient%2FSocketClient.java;fp=TD2%2Fclient%2FSocketClient.java;h=48a93eb75964660931a2f0cb16f18f082e51167d;hb=58312685472236da9be0138c9b5b450ca13387b1;hp=0000000000000000000000000000000000000000;hpb=2c648f756e35448bf69e8a09670219bfc4b2fd52;p=TD_SR.git diff --git a/TD2/client/SocketClient.java b/TD2/client/SocketClient.java new file mode 100644 index 0000000..48a93eb --- /dev/null +++ b/TD2/client/SocketClient.java @@ -0,0 +1,100 @@ +import java.io.*; +import java.net.*; +import java.util.*; + +public class SocketClient { + BufferedReader lecture; // pour le flot d'entrée venant du serveur + PrintWriter ecriture; // pour le flot de sortie vers le serveur + Socket sock; // le socket client + + public SocketClient() { + // établie une connexion au serveur par un appel + // à connexionServeur() + connexionServeur("localhost", 5000); + } + + public SocketClient(String adresseIPServeur, int portServeur) { + // établie une connexion au serveur par un appel + // à connexionServeur() + connexionServeur(adresseIPServeur, portServeur); + } + + private void connexionServeur(String adresseIPServeur, int portServeur) { + // créer un objet socket lié au socket serveur et l'affecte à sock + // puis établie les chaînages de flot nécessaires + // pour l'envoi et la reception de messages + try { + sock = new Socket(adresseIPServeur, portServeur); + } + catch (IOException e) { + System.err.println("IOException: " + e); + } + InputStream IStream = null; + try { + IStream = sock.getInputStream(); + } + catch (IOException e) { + System.err.println("IOException: " + e); + } + InputStreamReader IMesg = new InputStreamReader(IStream); + lecture = new BufferedReader(IMesg); + + OutputStream OStream = null; + try { + OStream = sock.getOutputStream(); + } + catch (IOException e) { + System.err.println("IOException: " + e); + } + ecriture = new PrintWriter(OStream); + } + + /** + * Send a message on the opened client socket + * @param msg a string containing the message to send + */ + public synchronized void sendMsg(String msg) { + //NOTE: it's not really required with one socket writer thread. + while (msg.isEmpty()) { + try { + wait(); + } + catch (InterruptedException e) { + System.err.println("InterruptedException: " + e); + } + } + ecriture.println(msg); + ecriture.flush(); + notifyAll(); + } + + /** + * Receive a message sent on the opened client socket + * @return a string containing the received message + */ + public String receiveMsg() { + String line = new String(); + try { + //FIXME: read only the line before the ending newline + line = lecture.readLine(); + } + catch (IOException e) { + System.err.println("IOException: " + e); + } + return line; + } + + /** + * Close all opened I/O streams attached to this object instance + */ + public void closeRWIO() { + ecriture.close(); + try { + lecture.close(); + } + catch (IOException e) { + System.err.println("IOException: " + e); + } + } + +} // fin classe SocketClient