package iotruntime; // Java packages import java.io.IOException; import java.net.UnknownHostException; import java.net.SocketException; import java.net.Socket; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.io.InputStream; import java.io.OutputStream; import iotruntime.slave.IoTDeviceAddress; /** Class IoTTCP is a wrapper class that provides * minimum interfaces for user to interact with IoT * devices in our system * * @author Rahmadi Trimananda * @version 1.0 * @since 2016-02-18 */ public final class IoTTCP { /** * IoTTCP class properties */ private Socket socket; protected IoTTCP(Socket _socket) { socket = _socket; } /** * Class constructor - no binding at first */ public IoTTCP() { socket = new Socket(); } public IoTTCP(IoTDeviceAddress iotDevAdd) throws UnknownHostException, IOException { String strHostAddress = iotDevAdd.getHostAddress(); int iSrcPort = iotDevAdd.getSourcePortNumber(); int iDstPort = iotDevAdd.getDestinationPortNumber(); socket = new Socket(strHostAddress, iDstPort, InetAddress.getLocalHost(), iSrcPort); } /** * bindAndConnect() method */ public void bindAndConnect(IoTDeviceAddress iotDevAdd, boolean bindToLocal) throws UnknownHostException, IOException { String strHostAddress = iotDevAdd.getHostAddress(); int iDstPort = iotDevAdd.getDestinationPortNumber(); // Check if we need to bind to a specific port locally if (bindToLocal) { int iSrcPort = iotDevAdd.getSourcePortNumber(); socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), iSrcPort)); } socket.connect(new InetSocketAddress(strHostAddress, iDstPort)); } /** * getInputStream() method */ public InputStream getInputStream() throws UnknownHostException, IOException { return socket.getInputStream(); } /** * getOutputStream() method */ public OutputStream getOutputStream() throws UnknownHostException, IOException { return socket.getOutputStream(); } /** * setReuseAddress(boolean on) method */ public void setReuseAddress(boolean on) throws SocketException { socket.setReuseAddress(on); } /** * close() method */ public void close() throws UnknownHostException, IOException { socket.close(); } }