Code cleanups.
[TD_SR.git] / TD2 / client / ClientSimplifie.java
1 import java.io.*;
2 import java.net.*;
3 import java.util.*;
4
5 public class ClientSimplifie {
6 BufferedReader lecture; // pour le flot d'entrée venant du serveur
7 PrintWriter ecriture; // pour le flot de sortie vers le serveur
8 Socket sock; // le socket client
9
10 public ClientSimplifie() {
11 // établie une connexion au serveur par un appel
12 // à connexionServeur()
13 attributesInit();
14 try {
15 connexionServeur("localhost", 5000);
16 }
17 catch (IOException e) {
18 System.err.println("IOException: " + e);
19 closeRWIO();
20 }
21 }
22
23 public ClientSimplifie(String adresseIPServeur, int portServeur) {
24 // établie une connexion au serveur par un appel
25 // à connexionServeur()
26 attributesInit();
27 try {
28 connexionServeur(adresseIPServeur, portServeur);
29 }
30 catch (IOException e) {
31 System.err.println("IOException: " + e);
32 closeRWIO();
33 }
34 }
35
36 private void connexionServeur(String adresseIPServeur, int portServeur) throws IOException {
37 // créer un objet socket lié au socket serveur et l'affecte à sock
38 // puis établie les chaînages de flot nécessaires
39 // pour l'envoi et la reception de messages
40 sock = new Socket(adresseIPServeur, portServeur);
41
42 OutputStream OStream = sock.getOutputStream();
43 ecriture = new PrintWriter(OStream);
44
45 InputStream IStream = sock.getInputStream();
46 InputStreamReader IMesg = new InputStreamReader(IStream);
47 lecture = new BufferedReader(IMesg);
48 }
49
50 private void attributesInit() {
51 sock = null;
52 lecture = null;
53 ecriture = null;
54 }
55
56 /**
57 * Send a message on the opened client socket
58 * @param msg a string containing the message to send
59 */
60 public void sendMsg(String msg) {
61 ecriture.println(msg);
62 ecriture.flush();
63 }
64
65 /**
66 * Receive a message sent on the opened client socket
67 * @return a string containing the received message
68 */
69 public String receiveMsg() throws IOException {
70 String line = new String();
71 //FIXME?: read only the line before the ending newline
72 line = lecture.readLine();
73 return line;
74 }
75
76 /**
77 * Close all opened I/O streams attached to this object instance
78 */
79 public void closeRWIO() {
80 try {
81 if (sock != null)
82 sock.close();
83 if (lecture != null)
84 lecture.close();
85 if (ecriture != null)
86 ecriture.close();
87 }
88 catch (IOException e) {
89 System.err.println("IOException: " + e);
90 }
91 }
92
93 } // fin classe ClientSimplifie