Class NetAdapterHost
- All Implemented Interfaces:
NetAdapterConstants
,Runnable
NetAdapterHost is the host (or server) component for a network-based DSPortAdapter. It actually wraps the hardware DSPortAdapter and handles connections from outside sources (NetAdapter) who want to access it.
NetAdapterHost is designed to be run in a thread, waiting for incoming
connections. You can run this in the same thread as your main program or you
can establish the connections yourself (presumably using some higher level of
security) and then call the handleConnection(Socket)
.
Once a NetAdapter is connected with the host, a version check is performed followed by a simple authentication step. The authentication is dependent upon a secret shared between the NetAdapter and the host. Both will use a default value, that each will agree with if you don't provide a secret of your own. To set the secret, add the following line to your onewire.properties file:
- NetAdapter.secret="This is my custom secret"
setSecret(String)
The NetAdapter and NetAdapterHost support multicast broadcasts for automatic
discovery of compatible servers on your LAN. To start the multicast listener
for this NetAdapterHost, call the createMulticastListener()
method .
For information on creating the client component, see the JavaDocs for the
invalid reference
NetAdapter
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.dalsemi.onewire.adapter.NetAdapterConstants
NetAdapterConstants.Connection
-
Field Summary
Modifier and TypeFieldDescriptionprotected DSPortAdapter
The adapter this NetAdapter will proxy tooMap of all Service threads created, only for multi-threadedprotected boolean
boolean flags for stopping the hostprotected boolean
boolean flags for stopping the hostprotected MulticastListener
Optional, listens for datagram packets from potential clientsprotected byte[]
secret for authentication with the serverprotected static final Random
random number generator, used to issue challenges to clientprotected ServerSocket
The server socket for listening for connectionsprotected boolean
boolean flag to indicate whether or not the host is single or multi-threadedprotected int
timeout for socket receive, in secondsFields inherited from interface com.dalsemi.onewire.adapter.NetAdapterConstants
BUFFERED_OUTPUT, CMD_BEGINEXCLUSIVE, CMD_CANBREAK, CMD_CANDELIVERPOWER, CMD_CANDELIVERSMARTPOWER, CMD_CANFLEX, CMD_CANHYPERDRIVE, CMD_CANOVERDRIVE, CMD_CANPROGRAM, CMD_CLOSECONNECTION, CMD_DATABLOCK, CMD_ENDEXCLUSIVE, CMD_EXCLUDEFAMILY, CMD_FINDFIRSTDEVICE, CMD_FINDNEXTDEVICE, CMD_GETADDRESS, CMD_GETBIT, CMD_GETBLOCK, CMD_GETBYTE, CMD_GETSPEED, CMD_PINGCONNECTION, CMD_PUTBIT, CMD_PUTBYTE, CMD_RESET, CMD_SETNORESETSEARCH, CMD_SETPOWERDURATION, CMD_SETPOWERNORMAL, CMD_SETPROGRAMPULSEDURATION, CMD_SETSEARCHALLDEVICES, CMD_SETSEARCHONLYALARMINGDEVICES, CMD_SETSPEED, CMD_STARTBREAK, CMD_STARTPOWERDELIVERY, CMD_STARTPROGRAMPULSE, CMD_TARGETALLFAMILIES, CMD_TARGETFAMILY, DEBUG, DEFAULT_MULTICAST_GROUP, DEFAULT_MULTICAST_PORT, DEFAULT_PORT, DEFAULT_SECRET, EMPTY_CONNECTION, RET_FAILURE, RET_SUCCESS, versionUID
-
Constructor Summary
ConstructorDescriptionNetAdapterHost
(DSPortAdapter adapter) Creates an instance of a NetAdapterHost which wraps the provided adapter.NetAdapterHost
(DSPortAdapter adapter, boolean multiThread) Creates an (optionally multithreaded) instance of a NetAdapterHost which wraps the provided adapter.NetAdapterHost
(DSPortAdapter adapter, int listenPort) Creates a single-threaded instance of a NetAdapterHost which wraps the provided adapter.NetAdapterHost
(DSPortAdapter adapter, int listenPort, boolean multiThread) Creates an (optionally multi-threaded) instance of a NetAdapterHost which wraps the provided adapter.NetAdapterHost
(DSPortAdapter adapter, ServerSocket serverSock) Creates an instance of a NetAdapterHost which wraps the provided adapter.NetAdapterHost
(DSPortAdapter adapter, ServerSocket serverSock, boolean multiThread) Creates an (optionally multi-threaded) instance of a NetAdapterHost which wraps the provided adapter. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Creates a Multicast Listener to allow NetAdapter clients to discover this NetAdapterHost automatically.void
createMulticastListener
(int port) Creates a Multicast Listener to allow NetAdapter clients to discover this NetAdapterHost automatically.void
createMulticastListener
(int port, String group) Creates a Multicast Listener to allow NetAdapter clients to discover this NetAdapterHost automatically.void
handleConnection
(Socket sock) Handles a socket connection.static void
A Default Main Method, for launching NetAdapterHost getting the default adapter with the OneWireAccessProvider and listening on the default port specified by DEFAULT_PORT.void
run()
Run method for threaded NetAdapterHost.void
Sets the secret used for authenticating incoming client connections.void
stopHost()
Stops all threads and kills the server socket.
-
Field Details
-
rand
random number generator, used to issue challenges to client -
adapter
The adapter this NetAdapter will proxy too -
serverSocket
The server socket for listening for connections -
netAdapterSecret
protected byte[] netAdapterSecretsecret for authentication with the server -
hostStopped
protected volatile boolean hostStoppedboolean flags for stopping the host -
hostRunning
protected volatile boolean hostRunningboolean flags for stopping the host -
singleThreaded
protected boolean singleThreadedboolean flag to indicate whether or not the host is single or multi-threaded -
hashHandlers
Map of all Service threads created, only for multi-threaded -
multicastListener
Optional, listens for datagram packets from potential clients -
timeoutInSeconds
protected int timeoutInSecondstimeout for socket receive, in seconds
-
-
Constructor Details
-
NetAdapterHost
Creates an instance of a NetAdapterHost which wraps the provided adapter. The host listens on the default port as specified by NetAdapterConstants.
Note that the secret used for authentication is the value specified in the onewire.properties file as "NetAdapter.secret=mySecret". To set the secret to another value, use the
setSecret(String)
method.- Parameters:
adapter
- DSPortAdapter that this NetAdapterHost will proxy commands to.- Throws:
IOException
- if a network error occurs or the listen socket cannot be created on the specified port.
-
NetAdapterHost
Creates a single-threaded instance of a NetAdapterHost which wraps the provided adapter. The host listens on the specified port.
Note that the secret used for authentication is the value specified in the onewire.properties file as "NetAdapter.secret=mySecret". To set the secret to another value, use the
setSecret(String)
method.- Parameters:
adapter
- DSPortAdapter that this NetAdapterHost will proxy commands to.listenPort
- the TCP/IP port to listen on for incoming connections- Throws:
IOException
- if a network error occurs or the listen socket cannot be created on the specified port.
-
NetAdapterHost
Creates an (optionally multithreaded) instance of a NetAdapterHost which wraps the provided adapter. The listen port is set to the default port as defined in NetAdapterConstants.
Note that the secret used for authentication is the value specified in the onewire.properties file as "NetAdapter.secret=mySecret". To set the secret to another value, use the
setSecret(String)
method.- Parameters:
adapter
- DSPortAdapter that this NetAdapterHost will proxy commands to.multiThread
- if true, multiple TCP/IP connections are allowed to interact simultaneously with this adapter.- Throws:
IOException
- if a network error occurs or the listen socket cannot be created on the specified port.
-
NetAdapterHost
public NetAdapterHost(DSPortAdapter adapter, int listenPort, boolean multiThread) throws IOException Creates an (optionally multi-threaded) instance of a NetAdapterHost which wraps the provided adapter. The host listens on the specified port.
Note that the secret used for authentication is the value specified in the onewire.properties file as "NetAdapter.secret=mySecret". To set the secret to another value, use the
setSecret(String)
method.- Parameters:
adapter
- DSPortAdapter that this NetAdapterHost will proxy commands to.listenPort
- the TCP/IP port to listen on for incoming connectionsmultiThread
- if true, multiple TCP/IP connections are allowed to interact simultaneously with this adapter.- Throws:
IOException
- if a network error occurs or the listen socket cannot be created on the specified port.
-
NetAdapterHost
Creates an instance of a NetAdapterHost which wraps the provided adapter. The host listens on the default port as specified by NetAdapterConstants.
Note that the secret used for authentication is the value specified in the onewire.properties file as "NetAdapter.secret=mySecret". To set the secret to another value, use the
setSecret(String)
method.- Parameters:
adapter
- DSPortAdapter that this NetAdapterHost will proxy commands to.serverSock
- the ServerSocket for incoming connections- Throws:
IOException
- if a network error occurs or the listen socket cannot be created on the specified port.
-
NetAdapterHost
public NetAdapterHost(DSPortAdapter adapter, ServerSocket serverSock, boolean multiThread) throws IOException Creates an (optionally multi-threaded) instance of a NetAdapterHost which wraps the provided adapter. The host listens on the specified port.
Note that the secret used for authentication is the value specified in the onewire.properties file as "NetAdapter.secret=mySecret". To set the secret to another value, use the
setSecret(String)
method.- Parameters:
adapter
- DSPortAdapter that this NetAdapterHost will proxy commands to.serverSock
- the ServerSocket for incoming connectionsmultiThread
- if true, multiple TCP/IP connections are allowed to interact simultaneously with this adapter.- Throws:
IOException
- if a network error occurs or the listen socket cannot be created on the specified port.
-
-
Method Details
-
setSecret
Sets the secret used for authenticating incoming client connections.- Parameters:
secret
- The shared secret information used for authenticating incoming client connections.
-
createMulticastListener
Creates a Multicast Listener to allow NetAdapter clients to discover this NetAdapterHost automatically. Uses defaults for Multicast group and port.- Throws:
IOException
UnknownHostException
-
createMulticastListener
Creates a Multicast Listener to allow NetAdapter clients to discover this NetAdapterHost automatically. Uses default for Multicast group.- Parameters:
port
- The port the Multicast socket will receive packets on- Throws:
IOException
UnknownHostException
-
createMulticastListener
public void createMulticastListener(int port, String group) throws IOException, UnknownHostException Creates a Multicast Listener to allow NetAdapter clients to discover this NetAdapterHost automatically.- Parameters:
port
- The port the Multicast socket will receive packets ongroup
- The group the Multicast socket will join- Throws:
IOException
UnknownHostException
-
run
public void run()Run method for threaded NetAdapterHost. Maintains server socket which waits for incoming connections. Whenever a connection is received launches it services the socket or (optionally) launches a new thread for servicing the socket. -
handleConnection
Handles a socket connection. If single-threaded, the connection is serviced in the current thread. If multi-threaded, a new thread is created for servicing this connection.- Throws:
IOException
-
stopHost
public void stopHost()Stops all threads and kills the server socket. -
main
A Default Main Method, for launching NetAdapterHost getting the default adapter with the OneWireAccessProvider and listening on the default port specified by DEFAULT_PORT.- Throws:
Exception
-