1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.net.telnet;
18
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.io.OutputStream;
22 import java.net.ServerSocket;
23 import java.net.Socket;
24
25 import org.apache.commons.io.IOUtils;
26
27
28
29
30 public class TelnetTestSimpleServer implements Runnable {
31 ServerSocket serverSocket;
32 Socket clientSocket;
33 Thread listener;
34
35
36
37
38
39
40
41 public TelnetTestSimpleServer(final int port) throws IOException {
42 serverSocket = new ServerSocket(port);
43
44 listener = new Thread(this);
45
46 listener.start();
47 }
48
49 public void disconnect() {
50 if (clientSocket == null) {
51 return;
52 }
53 synchronized (clientSocket) {
54 try {
55 clientSocket.notify();
56 } catch (final Exception e) {
57 System.err.println("Exception in notify, " + e.getMessage());
58 }
59 }
60 }
61
62 public InputStream getInputStream() throws IOException {
63 if (clientSocket != null) {
64 return clientSocket.getInputStream();
65 }
66 return null;
67 }
68
69 public OutputStream getOutputStream() throws IOException {
70 if (clientSocket != null) {
71 return clientSocket.getOutputStream();
72 }
73 return null;
74 }
75
76 @Override
77 public void run() {
78 boolean bError = false;
79 while (!bError) {
80 try {
81 clientSocket = serverSocket.accept();
82 synchronized (clientSocket) {
83 try {
84 clientSocket.wait();
85 } catch (final Exception e) {
86 System.err.println("Exception in wait, " + e.getMessage());
87 }
88 IOUtils.close(clientSocket, e -> System.err.println("Exception in close, " + e.getMessage()));
89 }
90 } catch (final IOException e) {
91 bError = true;
92 }
93 }
94 IOUtils.closeQuietly(serverSocket, e -> System.err.println("Exception in close, " + e.getMessage()));
95 }
96
97 public void stop() {
98 listener.interrupt();
99 IOUtils.closeQuietly(serverSocket, e -> System.err.println("Exception in close, " + e.getMessage()));
100 }
101 }