net.tomp2p.upnp
Class Discovery

java.lang.Object
  extended by net.tomp2p.upnp.Discovery

public class Discovery
extends 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.

Version:
1.0
Author:
SuperBonBon

Field Summary
static String ALL_DEVICES
           
static int DEFAULT_MX
           
static String DEFAULT_SEARCH
           
static int DEFAULT_SSDP_SEARCH_PORT
           
static int DEFAULT_TIMEOUT
           
static int DEFAULT_TTL
           
static String ROOT_DEVICES
           
static String SSDP_IP
           
static int SSDP_PORT
           
 
Constructor Summary
Discovery()
           
 
Method Summary
static Collection<RootDevice> discover()
          Devices discovering on all network interfaces with default values, all root devices will be searched
static Collection<RootDevice> discover(int timeOut, int ttl, int mx, 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 param
static Collection<RootDevice> discover(int timeOut, int ttl, int mx, String searchTarget, 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 param
static Collection<RootDevice> discover(int timeOut, String searchTarget)
          Devices discovering on all network interfaces with a given timeout and a given root device to search
static Collection<RootDevice> discover(String searchTarget)
          Devices discovering on all network interfaces with a given root device to search
static void sendSearchMessage(InetAddress src, int ttl, int mx, String searchTarget)
          Sends an SSDP search message on the network
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ROOT_DEVICES

public static final String ROOT_DEVICES
See Also:
Constant Field Values

ALL_DEVICES

public static final 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 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 String SSDP_IP
See Also:
Constant Field Values

SSDP_PORT

public static final int SSDP_PORT
See Also:
Constant Field Values
Constructor Detail

Discovery

public Discovery()
Method Detail

discover

public static Collection<RootDevice> discover()
                                       throws 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:
IOException - if some IOException occurs during discovering

discover

public static Collection<RootDevice> discover(String searchTarget)
                                       throws 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:
IOException - if some IOException occurs during discovering

discover

public static Collection<RootDevice> discover(int timeOut,
                                              String searchTarget)
                                       throws 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 response
searchTarget - 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:
IOException - if some IOException occurs during discovering

discover

public static Collection<RootDevice> discover(int timeOut,
                                              int ttl,
                                              int mx,
                                              String searchTarget)
                                       throws 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 reponse
ttl - the UDP socket packets time to live
mx - discovery message mx http header field value
searchTarget - 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:
IOException - if some IOException occurs during discovering

discover

public static Collection<RootDevice> discover(int timeOut,
                                              int ttl,
                                              int mx,
                                              String searchTarget,
                                              NetworkInterface ni)
                                       throws 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 reponse
ttl - the UDP socket packets time to live
mx - discovery message mx http header field value
searchTarget - the device URI to search
ni - 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:
IOException - if some IOException occurs during discovering

sendSearchMessage

public static void sendSearchMessage(InetAddress src,
                                     int ttl,
                                     int mx,
                                     String searchTarget)
                              throws IOException
Sends an SSDP search message on the network

Parameters:
src - the sender ip
ttl - the time to live
mx - the mx field
searchTarget - the search target
Throws:
IOException - if some IO errors occurs during search


Copyright © 2013. All Rights Reserved.