Package net.sbbi.upnp
Class Discovery
- java.lang.Object
-
- net.sbbi.upnp.Discovery
-
public class Discovery extends java.lang.Object
Class to discover an UPNP device on the network. A multicast socket will be created to discover devices, the binding port for this socket is set to 1901, if this is causing a problem you can use the net.sbbi.upnp.Discovery.bindPort system property to specify another port. The discovery methods only accept matching device description and broadcast message response IP to avoid a security flaw with the protocol. If you are not happy with such behaviour you can set the net.sbbi.upnp.ddos.matchip system property to false to avoid this check.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ALL_DEVICES
static int
DEFAULT_MX
static java.lang.String
DEFAULT_SEARCH
static int
DEFAULT_SSDP_SEARCH_PORT
static int
DEFAULT_TIMEOUT
static int
DEFAULT_TTL
static java.lang.String
ROOT_DEVICES
static java.lang.String
SSDP_IP
static int
SSDP_PORT
-
Constructor Summary
Constructors Constructor Description Discovery()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static RootDevice[]
discover()
Devices discovering on all network interfaces with default values, all root devices will be searchedstatic RootDevice[]
discover(int timeOut, int ttl, int mx, java.lang.String searchTarget)
Devices discovering on all network interfaces with a given timeout and a given root device to search, as well as a ttl and mx paramstatic RootDevice[]
discover(int timeOut, int ttl, int mx, java.lang.String searchTarget, java.net.NetworkInterface ni)
Devices discovering with a given timeout and a given root device to search on an given network interface, as well as a ttl and mx paramstatic RootDevice[]
discover(int timeOut, java.lang.String searchTarget)
Devices discovering on all network interfaces with a given timeout and a given root device to searchstatic RootDevice[]
discover(java.lang.String searchTarget)
Devices discovering on all network interfaces with a given root device to searchstatic void
sendSearchMessage(java.net.InetAddress src, int ttl, int mx, java.lang.String searchTarget)
Sends an SSDP search message on the network
-
-
-
Field Detail
-
ROOT_DEVICES
public static final java.lang.String ROOT_DEVICES
- See Also:
- Constant Field Values
-
ALL_DEVICES
public static final java.lang.String ALL_DEVICES
- See Also:
- Constant Field Values
-
DEFAULT_MX
public static final int DEFAULT_MX
- See Also:
- Constant Field Values
-
DEFAULT_TTL
public static final int DEFAULT_TTL
- See Also:
- Constant Field Values
-
DEFAULT_TIMEOUT
public static final int DEFAULT_TIMEOUT
- See Also:
- Constant Field Values
-
DEFAULT_SEARCH
public static final java.lang.String DEFAULT_SEARCH
- See Also:
- Constant Field Values
-
DEFAULT_SSDP_SEARCH_PORT
public static final int DEFAULT_SSDP_SEARCH_PORT
- See Also:
- Constant Field Values
-
SSDP_IP
public static final java.lang.String SSDP_IP
- See Also:
- Constant Field Values
-
SSDP_PORT
public static final int SSDP_PORT
- See Also:
- Constant Field Values
-
-
Method Detail
-
discover
public static RootDevice[] discover() throws java.io.IOException
Devices discovering on all network interfaces with default values, all root devices will be searched- Returns:
- an array of UPNP Root device or null if nothing found with the default timeout. Null does NOT means that no UPNP device is available on the network. It only means that for this default timeout no devices responded or that effectively no devices are available at all.
- Throws:
java.io.IOException
- if some IOException occurs during discovering
-
discover
public static RootDevice[] discover(java.lang.String searchTarget) throws java.io.IOException
Devices discovering on all network interfaces with a given root device to search- Parameters:
searchTarget
- the device URI to search- Returns:
- an array of UPNP Root device that matches the search or null if nothing found with the default timeout. Null does NOT means that no UPNP device is available on the network. It only means that for this given timeout no devices responded or that effectively no devices are available at all.
- Throws:
java.io.IOException
- if some IOException occurs during discovering
-
discover
public static RootDevice[] discover(int timeOut, java.lang.String searchTarget) throws java.io.IOException
Devices discovering on all network interfaces with a given timeout and a given root device to search- Parameters:
timeOut
- the time allowed for a device to give a responsesearchTarget
- the device URI to search- Returns:
- an array of UPNP Root device that matches the search or null if nothing found with the given timeout. Null does NOT means that no UPNP device is available on the network. It only means that for this given timeout no devices responded or that effectively no devices are available at all.
- Throws:
java.io.IOException
- if some IOException occurs during discovering
-
discover
public static RootDevice[] discover(int timeOut, int ttl, int mx, java.lang.String searchTarget) throws java.io.IOException
Devices discovering on all network interfaces with a given timeout and a given root device to search, as well as a ttl and mx param- Parameters:
timeOut
- the timeout for the a device to give a reponsettl
- the UDP socket packets time to livemx
- discovery message mx http header field valuesearchTarget
- the device URI to search- Returns:
- an array of UPNP Root device that matches the search or null if nothing found within the given timeout. Null return does NOT means that no UPNP device is available on the network. It only means that for this given timeout no devices responded or that effectively no devices are available at all.
- Throws:
java.io.IOException
- if some IOException occurs during discovering
-
discover
public static RootDevice[] discover(int timeOut, int ttl, int mx, java.lang.String searchTarget, java.net.NetworkInterface ni) throws java.io.IOException
Devices discovering with a given timeout and a given root device to search on an given network interface, as well as a ttl and mx param- Parameters:
timeOut
- the timeout for the a device to give a reponsettl
- the UDP socket packets time to livemx
- discovery message mx http header field valuesearchTarget
- the device URI to searchni
- the networkInterface where to search devices, null to lookup all interfaces- Returns:
- an array of UPNP Root device that matches the search or null if nothing found within the given timeout. Null return does NOT means that no UPNP device is available on the network. It only means that for this given timeout no devices responded or that effectively no devices are available at all.
- Throws:
java.io.IOException
- if some IOException occurs during discovering
-
sendSearchMessage
public static void sendSearchMessage(java.net.InetAddress src, int ttl, int mx, java.lang.String searchTarget) throws java.io.IOException
Sends an SSDP search message on the network- Parameters:
src
- the sender ipttl
- the time to livemx
- the mx fieldsearchTarget
- the search target- Throws:
java.io.IOException
- if some IO errors occurs during search
-
-