1 package uba.db.client.model;
2
3 import java.io.*;
4 import java.net.*;
5
6 /***
7 * Estado de conexión al servidor.
8 *
9 * @version $Revision 1.0$
10 */
11 public class ConnectionToServer {
12
13 Socket kkSocket = null;
14
15 PrintWriter out = null;
16
17 BufferedReader in = null;
18
19 ClientManager manager;
20
21 /***
22 * Inicia la conexión.
23 *
24 * @param m
25 * Manager del que se reciben las órdenes.
26 * @throws IOException
27 * Error de socket.
28 */
29 public void connect(ClientManager m) throws IOException {
30
31 try {
32 kkSocket = new Socket("localhost", 4444);
33 out = new PrintWriter(kkSocket.getOutputStream(), true);
34 in = new BufferedReader(new InputStreamReader(kkSocket
35 .getInputStream()));
36 manager = m;
37
38 in.readLine();
39 } catch (UnknownHostException e) {
40 System.err.println("Don't know about host: Hardcoded workstation.");
41 System.exit(1);
42 } catch (IOException e) {
43 System.err
44 .println("Couldn't get I/O for the connection to: Hardcoded workstation.");
45 System.exit(1);
46 }
47 }
48
49 /***
50 * Deja en el socket el string y obtiene un string resultante.
51 *
52 * @param s
53 * El string a mandar con la sentencia.
54 * @return El resultado de tomar del socket lo que envía el server.
55 * @throws IOException
56 * Error de socket.
57 */
58 public String execute(String s) throws IOException {
59 String fromServer;
60 String fromUser;
61 fromUser = s;
62 if (fromUser != null) {
63 System.out.println("Client: " + fromUser);
64 out.println(fromUser);
65 }
66 fromServer = in.readLine();
67 System.out.println("Server: " + fromServer);
68
69 if (fromServer.equals("Connection Closed")) {
70 manager.close();
71 close();
72 return null;
73 }
74
75 return fromServer;
76
77 }
78
79 /***
80 * Cierra el socket.
81 *
82 * @throws IOException
83 * Error de socket.
84 */
85 void close() throws IOException {
86 out.close();
87 in.close();
88 kkSocket.close();
89 System.exit(0);
90 }
91 }