working setup for a4
[tt2015.git] / a4 / tcp / tester / learner / SutSocketWrapper.java
1 package learner;
2
3 import java.io.BufferedReader;
4 import java.io.IOException;
5 import java.io.InputStreamReader;
6 import java.io.OutputStreamWriter;
7 import java.io.PrintWriter;
8 import java.net.Socket;
9
10
11 public class SutSocketWrapper {
12 private Socket sock;
13 private PrintWriter sockout;
14 private BufferedReader sockin;
15 private int run;
16
17 public SutSocketWrapper(int portNumber) {
18
19 try {
20 sock = new Socket("localhost", portNumber);
21
22 /* Call setTcpNoDelay to improve communication performance : */
23
24 sock.setTcpNoDelay(true); // remove unnecessary delay in socket communication!
25
26
27 // make char writer from byte writer which automatically encodes chars using UTF-8 and
28 // automatically flushes the buffer on each println call.
29 sockout = new PrintWriter(new OutputStreamWriter(sock.getOutputStream(), "UTF-8"),true);
30 // make char reader from byte reader which automatically decodes bytes to chars using UTF-8
31 sockin = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8"));
32
33
34 run=1;
35 } catch (IOException e) {
36 // e.printStackTrace();
37 System.err.println("");
38 System.err.println("\n\nPROBLEM: problem connecting with SUT:\n\n " + e.getMessage() +"\n\n");
39 System.exit(1);
40 }
41 }
42
43
44
45 public String sendInput(String inputStr) {
46 try {
47
48 // Send input to SUT
49 sockout.println(inputStr);
50 sockout.flush();
51
52 // Receive output from SUT
53 String outputStr=sockin.readLine();
54 if (outputStr==null) {
55 System.err.println("");
56 System.err.println("\n\nPROBLEM: problem reading output from SUT: SUT closed connection\n\n " );
57 System.exit(1);
58 }
59
60 return outputStr;
61 } catch (IOException e) {
62 e.printStackTrace();
63 return null;
64 }
65 }
66
67 public void sendReset() {
68
69 // send reset to SUT
70 sockout.println("reset");
71 sockout.flush();
72
73 run=run+1;
74 }
75
76
77
78
79 public void close() {
80 /*
81 try {
82 sockin.close();
83 sockout.close();
84 sock.close();
85 } catch (IOException ex) {
86
87 }
88 */
89 }
90
91
92
93 }