Skip to content

Instantly share code, notes, and snippets.

@kkdeok
Last active June 25, 2018 13:51
Show Gist options
  • Save kkdeok/a109e9249e7ad4656ca2e54bf28d72ca to your computer and use it in GitHub Desktop.
Save kkdeok/a109e9249e7ad4656ca2e54bf28d72ca to your computer and use it in GitHub Desktop.
/**
* Created by Kideok Kim on 17/06/2018.
*/
public class TCPServerTest {
private static ExecutorService serverExecutor;
private static final String HOST = "localhost";
private static final int PORT = 9001;
@BeforeClass
public static void setUpClass() {
serverExecutor = Executors.newFixedThreadPool(1);
serverExecutor.submit(() -> new TCPServer().start());
}
@AfterClass
public static void tearDownClass() throws Exception {
serverExecutor.shutdown();
if (!serverExecutor.isTerminated()) {
serverExecutor.awaitTermination(2, TimeUnit.SECONDS);
}
}
@Test
public void testConnectionWithExpectedMessage() {
try (Socket socket = new Socket(HOST, PORT);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os)){
dos.writeUTF("hello server");
dos.flush();
String response = dis.readUTF();
assertTrue(ResponseMessage.HELLO_CLIENT.getMessage().equals(response));
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Created by Kideok Kim on 17/06/2018.
*/
public class TCPServer {
private static final int PORT = 9001;
public void start() {
System.out.println("TCP server is running");
try (ServerSocket listener = new ServerSocket(PORT)) {
while (true) {
try (Socket socket = listener.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
DataInputStream dis = new DataInputStream(is);
DataOutputStream dos = new DataOutputStream(os)) {
String clientMessage = dis.readUTF();
if ("hello server".equals(clientMessage)) {
dos.writeUTF(ResponseMessage.HELLO_CLIENT.getMessage());
} else {
dos.writeUTF(ResponseMessage.UNEXPECTED.getMessage());
}
dos.flush();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TCPServer server = new TCPServer();
server.start();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment