NsdManager Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
The Network Service Discovery Manager class provides the API to discover services on a network.
[Android.Runtime.Register("android/net/nsd/NsdManager", DoNotGenerateAcw=true)]
public sealed class NsdManager : Java.Lang.Object
[<Android.Runtime.Register("android/net/nsd/NsdManager", DoNotGenerateAcw=true)>]
type NsdManager = class
inherit Object
- Inheritance
- Attributes
Remarks
The Network Service Discovery Manager class provides the API to discover services on a network. As an example, if device A and device B are connected over a Wi-Fi network, a game registered on device A can be discovered by a game on device B. Another example use case is an application discovering printers on the network.
The API currently supports DNS based service discovery and discovery is currently limited to a local network over Multicast DNS. DNS service discovery is described at http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt
The API is asynchronous, and responses to requests from an application are on listener callbacks on a separate internal thread.
There are three main operations the API supports - registration, discovery and resolution.
Application start
|
|
| onServiceRegistered()
Register any local services /
to be advertised with \
registerService() onRegistrationFailed()
|
|
discoverServices()
|
Maintain a list to track
discovered services
|
|--------->
| |
| onServiceFound()
| |
| add service to list
| |
|<----------
|
|--------->
| |
| onServiceLost()
| |
| remove service from list
| |
|<----------
|
|
| Connect to a service
| from list ?
|
resolveService()
|
onServiceResolved()
|
Establish connection to service
with the host and port information
An application that needs to advertise itself over a network for other applications to discover it can do so with a call to #registerService
. If Example is a http based application that can provide HTML data to peer services, it can register a name "Example" with service type "_http._tcp". A successful registration is notified with a callback to RegistrationListener#onServiceRegistered
and a failure to register is notified over RegistrationListener#onRegistrationFailed
A peer application looking for http services can initiate a discovery for "_http._tcp" with a call to #discoverServices
. A service found is notified with a callback to DiscoveryListener#onServiceFound
and a service lost is notified on DiscoveryListener#onServiceLost
.
Once the peer application discovers the "Example" http service, and either needs to read the attributes of the service or wants to receive data from the "Example" application, it can initiate a resolve with #resolveService
to resolve the attributes, host, and port details. A successful resolve is notified on ResolveListener#onServiceResolved
and a failure is notified on ResolveListener#onResolveFailed
.
Applications can reserve for a service type at http://www.iana.org/form/ports-service. Existing services can be found at http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
Java documentation for android.net.nsd.NsdManager
.
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Fields
ActionNsdStateChanged |
Broadcast intent action to indicate whether network service discovery is enabled or disabled. |
ExtraNsdState |
The lookup key for an int that indicates whether network service discovery is enabled or disabled. |
FailureAlreadyActive |
Obsolete.
Indicates that the operation failed because it is already active. |
FailureBadParameters |
Obsolete.
Indicates that the service has failed to resolve because of bad parameters. |
FailureInternalError |
Obsolete.
Failures are passed with |
FailureMaxLimit |
Obsolete.
Indicates that the operation failed because the maximum outstanding requests from the applications have reached. |
FailureOperationNotRunning |
Obsolete.
Indicates that the stop operation failed because it is not running. |
NsdStateDisabled |
Network service discovery is disabled |
NsdStateEnabled |
Network service discovery is enabled |
ProtocolDnsSd |
Obsolete.
Dns based service discovery protocol |
Properties
Class |
Returns the runtime class of this |
Handle |
The handle to the underlying Android instance. (Inherited from Object) |
JniIdentityHashCode | (Inherited from Object) |
JniPeerMembers | |
PeerReference | (Inherited from Object) |
ThresholdClass |
This API supports the Mono for Android infrastructure and is not intended to be used directly from your code. (Inherited from Object) |
ThresholdType |
This API supports the Mono for Android infrastructure and is not intended to be used directly from your code. (Inherited from Object) |
Methods
Explicit Interface Implementations
IJavaPeerable.Disposed() | (Inherited from Object) |
IJavaPeerable.DisposeUnlessReferenced() | (Inherited from Object) |
IJavaPeerable.Finalized() | (Inherited from Object) |
IJavaPeerable.JniManagedPeerState | (Inherited from Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) | (Inherited from Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) | (Inherited from Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) | (Inherited from Object) |
Extension Methods
JavaCast<TResult>(IJavaObject) |
Performs an Android runtime-checked type conversion. |
JavaCast<TResult>(IJavaObject) | |
GetJniTypeName(IJavaPeerable) |
Gets the JNI name of the type of the instance |
JavaAs<TResult>(IJavaPeerable) |
Try to coerce |
TryJavaCast<TResult>(IJavaPeerable, TResult) |
Try to coerce |