public class InternetGatewayDevice
extends java.lang.Object
Modifier and Type | Method and Description |
---|---|
boolean |
addPortMapping(java.lang.String description,
java.lang.String protocol,
java.lang.String remoteHost,
int externalPort,
java.lang.String internalClient,
int internalPort,
int leaseDuration)
Configures a nat entry on the UPNP device.
|
boolean |
deletePortMapping(java.lang.String remoteHost,
int externalPort,
java.lang.String protocol)
Deletes a port mapping on the IDG device
|
static InternetGatewayDevice[] |
getDevices(int timeout)
Lookup all the IGD (IP or PPP) devices on the network.
|
static InternetGatewayDevice[] |
getDevices(int timeout,
int ttl,
int mx,
java.net.NetworkInterface ni)
Lookup all the IGD (IP
urn:schemas-upnp-org:service:WANIPConnection:1, or PPP
urn:schemas-upnp-org:service:WANPPPConnection:1) devices for a
given network interface.
|
java.lang.String |
getExternalIPAddress()
Retrieves the external IP address
|
ActionResponse |
getGenericPortMappingEntry(int newPortMappingIndex)
Retrieves a generic port mapping entry.
|
RootDevice |
getIGDRootDevice()
Retrieves the IDG UNPNRootDevice object
|
java.lang.Integer |
getNatMappingsCount()
Retrieves the current number of mapping in the NAT table
|
java.lang.Integer |
getNatTableSize()
Computes the total entries in available in the nat table size,
not that this method is not guaranteed to work with all upnp
devices since it is not an generic IGD command
|
ActionResponse |
getSpecificPortMappingEntry(java.lang.String remoteHost,
int externalPort,
java.lang.String protocol)
Retrieves information about a specific port mapping
|
static void |
main(java.lang.String[] args) |
static void |
printDevices()
Discovers and prints devices found on the local network
|
public static void main(java.lang.String[] args)
args
- public static void printDevices()
public RootDevice getIGDRootDevice()
public static InternetGatewayDevice[] getDevices(int timeout) throws java.io.IOException
timeout
- the timeout in ms to listen for devices response, -1
for default valuejava.io.IOException
- if some IO Exception occurs during discoverypublic static InternetGatewayDevice[] getDevices(int timeout, int ttl, int mx, java.net.NetworkInterface ni) throws java.io.IOException
timeout
- the timeout in ms to listen for devices response, -1
for default valuettl
- the discovery ttl such as Discovery.DEFAULT_TTL
mx
- the discovery mx such as Discovery.DEFAULT_MX
ni
- the network interface where to lookup IGD devicesjava.io.IOException
- if some IO Exception occurs during discoverypublic java.lang.String getExternalIPAddress() throws UPNPResponseException, java.io.IOException
UPNPResponseException
- if the devices returns an error codejava.io.IOException
- if some error occurs during communication with the
devicepublic ActionResponse getGenericPortMappingEntry(int newPortMappingIndex) throws java.io.IOException, UPNPResponseException
newPortMappingIndex
- the index to lookup in the nat table of the upnp
devicejava.io.IOException
- if some error occurs during communication with the
deviceUPNPResponseException
- if some unexpected error occurs on the UPNP devicepublic ActionResponse getSpecificPortMappingEntry(java.lang.String remoteHost, int externalPort, java.lang.String protocol) throws java.io.IOException, UPNPResponseException
remoteHost
- the remote host ip to check, null if wildcardexternalPort
- the port to checkprotocol
- the protocol for the mapping, either TCP or UDPjava.io.IOException
- if some error occurs during communication with the
deviceUPNPResponseException
- if some unexpected error occurs on the UPNP devicepublic boolean addPortMapping(java.lang.String description, java.lang.String protocol, java.lang.String remoteHost, int externalPort, java.lang.String internalClient, int internalPort, int leaseDuration) throws java.io.IOException, UPNPResponseException
description
- the mapping description, null for no descriptionprotocol
- the protocol, either TCP or UDPremoteHost
- the remote host ip for this entry, null for a wildcard
valueexternalPort
- the external port to open on the UPNP device an map on
the internal client, 0 for a wildcard valueinternalClient
- the internal client ip where data should be redirectedinternalPort
- the internal client port where data should be
redirectedleaseDuration
- the lease duration in seconds 0 for an infinite timejava.io.IOException
- if some error occurs during communication with the
deviceUPNPResponseException
- if the device does not accept some settings :public boolean deletePortMapping(java.lang.String remoteHost, int externalPort, java.lang.String protocol) throws java.io.IOException, UPNPResponseException
remoteHost
- the host ip for which the mapping was done, null value
for a wildcard valueexternalPort
- the port to closeprotocol
- the protocol for the mapping, TCP or UDPjava.io.IOException
- if some error occurs during communication with the
deviceUPNPResponseException
- if the devices returns an error messagepublic java.lang.Integer getNatMappingsCount() throws java.io.IOException, UPNPResponseException
java.io.IOException
- if some error occurs during communication with the
deviceUPNPResponseException
- if the devices returns an error message with error
code other than 404public java.lang.Integer getNatTableSize() throws java.io.IOException, UPNPResponseException
java.io.IOException
- if some error occurs during communication with the
deviceUPNPResponseException
- if the devices returns an error message with error
code other than 713 or 402