4 import java.io.IOException;
\r
5 import java.net.UnknownHostException;
\r
6 import java.net.SocketException;
\r
7 import java.net.Socket;
\r
8 import java.net.InetAddress;
\r
9 import java.net.InetSocketAddress;
\r
10 import java.net.ServerSocket;
\r
11 import java.io.InputStream;
\r
12 import java.io.OutputStream;
\r
14 import iotruntime.slave.IoTDeviceAddress;
\r
16 /** Class IoTTCP is a wrapper class that provides
\r
17 * minimum interfaces for user to interact with IoT
\r
18 * devices in our system
\r
20 * @author Rahmadi Trimananda <rahmadi.trimananda @ uci.edu>
\r
24 public final class IoTTCP {
\r
27 * IoTTCP class properties
\r
29 private Socket socket;
\r
31 protected IoTTCP(Socket _socket) {
\r
36 * Class constructor - no binding at first
\r
39 socket = new Socket();
\r
43 public IoTTCP(IoTDeviceAddress iotDevAdd) throws UnknownHostException, IOException {
\r
45 String strHostAddress = iotDevAdd.getHostAddress();
\r
46 int iSrcPort = iotDevAdd.getSourcePortNumber();
\r
47 int iDstPort = iotDevAdd.getDestinationPortNumber();
\r
49 socket = new Socket(strHostAddress, iDstPort, InetAddress.getLocalHost(), iSrcPort);
\r
53 * bindAndConnect() method
\r
55 public void bindAndConnect(IoTDeviceAddress iotDevAdd, boolean bindToLocal) throws UnknownHostException, IOException {
\r
57 String strHostAddress = iotDevAdd.getHostAddress();
\r
58 int iDstPort = iotDevAdd.getDestinationPortNumber();
\r
60 // Check if we need to bind to a specific port locally
\r
62 int iSrcPort = iotDevAdd.getSourcePortNumber();
\r
63 socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), iSrcPort));
\r
65 socket.connect(new InetSocketAddress(strHostAddress, iDstPort));
\r
69 * getInputStream() method
\r
71 public InputStream getInputStream() throws UnknownHostException, IOException {
\r
73 return socket.getInputStream();
\r
77 * getOutputStream() method
\r
79 public OutputStream getOutputStream() throws UnknownHostException, IOException {
\r
81 return socket.getOutputStream();
\r
85 * setReuseAddress(boolean on) method
\r
87 public void setReuseAddress(boolean on) throws SocketException {
\r
89 socket.setReuseAddress(on);
\r
96 public void close() throws UnknownHostException, IOException {
\r