package com.github.dreamhead.moco.helper; import java.io.BufferedReader; import java.io.Closeable; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.util.concurrent.TimeUnit; public class MocoSocketHelper implements Closeable { private Socket socket; private SocketAddress address; private PrintStream os; private BufferedReader reader; public MocoSocketHelper(final String target, final int port) { socket = new Socket(); address = new InetSocketAddress(target, port); } public void connect() { try { socket.connect(address); socket.setSoTimeout((int) TimeUnit.SECONDS.toMillis(1)); OutputStream outputStream = this.socket.getOutputStream(); this.os = new PrintStream(outputStream); this.reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); } catch (IOException e) { throw new RuntimeException(e); } } public String send(final String request) { os.print(request); os.flush(); try { return reader.readLine(); } catch (IOException e) { throw new RuntimeException(e); } } public String send(final String request, final int readCount) { os.print(request); os.flush(); try { char[] buffer = new char[readCount]; reader.read(buffer); return new String(buffer); } catch (IOException e) { throw new RuntimeException(e); } } @Override public void close() throws IOException { this.socket.close(); } }