Last active
June 25, 2018 13:51
-
-
Save kkdeok/a109e9249e7ad4656ca2e54bf28d72ca to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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