Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Inherited Constants](https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#inhconstants) \| [Fields](https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#lfields) \| [Ctors](https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#pubctors) \| [Methods](https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#inhmethods)

# NsdServiceInfo

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/net/nsd/NsdServiceInfo "View this page in Kotlin") \|Java


`
public

final

class
NsdServiceInfo
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


implements

https://developer.android.com/reference/android/os/Parcelable


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.net.nsd.NsdServiceInfo |

<br />

*** ** * ** ***

A class representing service information for network service discovery
**See also:**

- `https://developer.android.com/reference/android/net/nsd/NsdManager`

## Summary

| ### Inherited constants |
|---|
| From interface `https://developer.android.com/reference/android/os/Parcelable` |---|---| | `int` | `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` Descriptor bit used with `https://developer.android.com/reference/android/os/Parcelable#describeContents()`: indicates that the Parcelable object's flattened representation includes a file descriptor. | | `int` | `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE` Flag for use with `https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)`: the object being written is a return value, that is the result of a function such as "`Parcelable someFunction()`", "`void someFunction(out Parcelable)`", or "`void someFunction(inout Parcelable)`". | |

| ### Fields ||
|---|---|
| ` public static final https://developer.android.com/reference/android/os/Parcelable.Creator<https://developer.android.com/reference/android/net/nsd/NsdServiceInfo>` | `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#CREATOR` Implement the Parcelable interface |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#NsdServiceInfo()() ` |

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#describeContents()() ` Implement the Parcelable interface |
| ` https://developer.android.com/reference/java/util/Map<https://developer.android.com/reference/java/lang/String, byte[]>` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getAttributes()() ` Retrieve attributes as a map of String keys to byte\[\] values. |
| ` https://developer.android.com/reference/java/net/InetAddress` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getHost()() ` *This method was deprecated in API level 34. Use `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getHostAddresses()` to get the entire list of addresses for the host.* |
| ` https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/net/InetAddress>` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getHostAddresses()() ` Get the host addresses. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getHostname()() ` Get the hostname. |
| ` https://developer.android.com/reference/android/net/Network` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getNetwork()() ` Get the network where the service can be found. |
| ` int` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getPort()() ` Get port number. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getServiceName()() ` Get the service name |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getServiceType()() ` Get the service type |
| ` https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String>` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getSubtypes()() ` Returns subtypes of this service instance. |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#removeAttribute(java.lang.String)(https://developer.android.com/reference/java/lang/String key) ` Remove an attribute by key |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setAttribute(java.lang.String,%20byte[])(https://developer.android.com/reference/java/lang/String key, byte[] value) ` Add a service attribute as a key/value pair using raw bytes. |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setAttribute(java.lang.String,%20java.lang.String)(https://developer.android.com/reference/java/lang/String key, https://developer.android.com/reference/java/lang/String value) ` Add a service attribute as a key/value pair. |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setHost(java.net.InetAddress)(https://developer.android.com/reference/java/net/InetAddress s) ` *This method was deprecated in API level 34. Use `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setHostAddresses(java.util.List<java.net.InetAddress>)` to set multiple addresses for the host.* |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setHostAddresses(java.util.List<java.net.InetAddress>)(https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/net/InetAddress> addresses) ` Set the host addresses. |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setNetwork(android.net.Network)(https://developer.android.com/reference/android/net/Network network) ` Set the network where the service can be found. |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setPort(int)(int p) ` Set port number |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setServiceName(java.lang.String)(https://developer.android.com/reference/java/lang/String s) ` Set the service name |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setServiceType(java.lang.String)(https://developer.android.com/reference/java/lang/String s) ` Set the service type |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setSubtypes(java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String> subtypes) ` Sets the subtypes to be advertised for this service instance. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#toString()() ` Returns a string representation of the object. |
| ` void` | ` https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int flags) ` Implement the Parcelable interface |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||
| From interface ` https://developer.android.com/reference/android/os/Parcelable ` |---|---| | ` abstract int` | ` https://developer.android.com/reference/android/os/Parcelable#describeContents()() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. | | ` abstract void` | ` https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int flags) ` Flatten this object in to a Parcel. | ||

## Fields

### CREATOR

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final Creator<NsdServiceInfo> CREATOR
```

Implement the Parcelable interface

<br />

## Public constructors

### NsdServiceInfo

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public NsdServiceInfo ()
```

<br />

<br />

## Public methods

### describeContents

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int describeContents ()
```

Implement the Parcelable interface

<br />

| Returns ||
|---|---|
| `int` | a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either `0` or - `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` |

### getAttributes

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Map<String, byte[]> getAttributes ()
```

Retrieve attributes as a map of String keys to byte\[\] values. The attributes map is only
valid for a resolved service.

The returned map is unmodifiable; changes must be made through `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setAttribute(java.lang.String,%20byte[])` and
`https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#removeAttribute(java.lang.String)`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Map<https://developer.android.com/reference/java/lang/String, byte[]>` | <br /> |

### getHost

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public InetAddress getHost ()
```


**This method was deprecated
in API level 34.**   

Use `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getHostAddresses()` to get the entire list of addresses for the host.

Get the host address. The host address is valid for a resolved service.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/net/InetAddress` | <br /> |

### getHostAddresses

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public List<InetAddress> getHostAddresses ()
```

Get the host addresses.

All host addresses are valid for the resolved service.
All addresses share the same port

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/net/InetAddress>` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getPort()`

### getHostname

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 17](https://developer.android.com/sdkExtensions)

```
public String getHostname ()
```

Get the hostname.

When a service is resolved through `https://developer.android.com/reference/android/net/nsd/NsdManager#resolveService(android.net.nsd.NsdServiceInfo,%20android.net.nsd.NsdManager.ResolveListener)` or
`https://developer.android.com/reference/android/net/nsd/NsdManager#registerServiceInfoCallback(android.net.nsd.DiscoveryRequest,%20java.util.concurrent.Executor,%20android.net.nsd.NsdManager.ServiceInfoCallback)`, this returns the hostname of the resolved
service. In all other cases, this will be null. The top level domain ".local." is omitted.
For example, this returns "MyHost" when the service's hostname is "MyHost.local.".

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | <br /> |

### getNetwork

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 3](https://developer.android.com/sdkExtensions)

```
public Network getNetwork ()
```

Get the network where the service can be found.

This is set if this `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo` was obtained from
`https://developer.android.com/reference/android/net/nsd/NsdManager#discoverServices(android.net.nsd.DiscoveryRequest,%20java.util.concurrent.Executor,%20android.net.nsd.NsdManager.DiscoveryListener)` or `https://developer.android.com/reference/android/net/nsd/NsdManager#resolveService(android.net.nsd.NsdServiceInfo,%20android.net.nsd.NsdManager.ResolveListener)`, unless the service
was found on a network interface that does not have a `https://developer.android.com/reference/android/net/Network` (such as a tethering
downstream, where services are advertised from devices connected to this device via
tethering).

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/net/Network` | This value may be `null`. <br /> |

### getPort

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getPort ()
```

Get port number. The port number is valid for a resolved service.

The port is valid for all addresses.

<br />

| Returns ||
|---|---|
| `int` | <br /> |

**See also:**

- `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#getHostAddresses()`

### getServiceName

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String getServiceName ()
```

Get the service name

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | <br /> |

### getServiceType

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String getServiceType ()
```

Get the service type

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | <br /> |

### getSubtypes

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 12](https://developer.android.com/sdkExtensions)

```
public Set<String> getSubtypes ()
```

Returns subtypes of this service instance.

When this object is returned by the service discovery/browse APIs (etc. `https://developer.android.com/reference/android/net/nsd/NsdManager.DiscoveryListener`), the return value may or may not include the subtypes of this
service.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String>` | This value cannot be `null`. <br /> |

### removeAttribute

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void removeAttribute (String key)
```

Remove an attribute by key

<br />

| Parameters ||
|---|---|
| `key` | `String` <br /> |

### setAttribute

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setAttribute (String key, 
                byte[] value)
```

Add a service attribute as a key/value pair using raw bytes.

Service attributes are included as DNS-SD TXT record pairs.

This method preserves the provided bytes exactly, ensuring that data is
maintained even if the bytes do not represent a valid UTF-8 string.

The key must be US-ASCII printable characters, excluding the '=' character. The
total length of key + value must be less than 255 bytes.

Keys should be short, ideally no more than 9 characters, and unique per instance of
`https://developer.android.com/reference/android/net/nsd/NsdServiceInfo`. Calling `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setAttribute(java.lang.String,%20byte[])` twice with the same key will
overwrite the previous value.

<br />

| Parameters ||
|---|---|
| `key` | `String`: the key of the attribute. This value cannot be `null`. <br /> |
| `value` | `byte`: the raw bytes of the attribute value, or null for an attribute with no value <br /> |

### setAttribute

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setAttribute (String key, 
                String value)
```

Add a service attribute as a key/value pair.

Service attributes are included as DNS-SD TXT record pairs.

The key must be US-ASCII printable characters, excluding the '=' character. Values may
be UTF-8 strings or null. The total length of key + value must be less than 255 bytes.

Keys should be short, ideally no more than 9 characters, and unique per instance of
`https://developer.android.com/reference/android/net/nsd/NsdServiceInfo`. Calling `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setAttribute(java.lang.String,%20byte[])` twice with the same key will overwrite
first value.

<br />

| Parameters ||
|---|---|
| `key` | `String` <br /> |
| `value` | `String` <br /> |

### setHost

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level
34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setHost (InetAddress s)
```


**This method was deprecated
in API level 34.**   

Use `https://developer.android.com/reference/android/net/nsd/NsdServiceInfo#setHostAddresses(java.util.List<java.net.InetAddress>)` to set multiple addresses for the host.

Set the host address

<br />

| Parameters ||
|---|---|
| `s` | `InetAddress` <br /> |

### setHostAddresses

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 7](https://developer.android.com/sdkExtensions)

```
public void setHostAddresses (List<InetAddress> addresses)
```

Set the host addresses.

When registering hosts/services, there can only be one registration including address
records for a given hostname.

For example, if a client registers a service with the hostname "MyHost" and the address
records of 192.168.1.1 and 192.168.1.2, then other registrations for the hostname "MyHost"
must not have any address record, otherwise there will be a conflict.

<br />

| Parameters ||
|---|---|
| `addresses` | `List`: This value cannot be `null`. <br /> |

### setNetwork

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 3](https://developer.android.com/sdkExtensions)

```
public void setNetwork (Network network)
```

Set the network where the service can be found.

<br />

| Parameters ||
|---|---|
| `network` | `Network`: The network, or null to search for, or to announce, the service on all connected networks. <br /> |

### setPort

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setPort (int p)
```

Set port number

<br />

| Parameters ||
|---|---|
| `p` | `int` <br /> |

### setServiceName

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setServiceName (String s)
```

Set the service name

<br />

| Parameters ||
|---|---|
| `s` | `String` <br /> |

### setServiceType

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setServiceType (String s)
```

Set the service type

<br />

| Parameters ||
|---|---|
| `s` | `String` <br /> |

### setSubtypes

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in [T Extensions 12](https://developer.android.com/sdkExtensions)

```
public void setSubtypes (Set<String> subtypes)
```

Sets the subtypes to be advertised for this service instance.

The elements in `subtypes` should be the subtype identifiers which have the trailing
"._sub" removed. For example, the subtype should be "_printer" for
"_printer._sub._http._tcp.local".

Only one subtype will be registered if multiple elements of `subtypes` have the same
case-insensitive value.

<br />

| Parameters ||
|---|---|
| `subtypes` | `Set`: This value cannot be `null`. <br /> |

### toString

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String toString ()
```

Returns a string representation of the object.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | a string representation of the object. <br /> |

### writeToParcel

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void writeToParcel (Parcel dest, 
                int flags)
```

Implement the Parcelable interface

<br />

| Parameters ||
|---|---|
| `dest` | `Parcel`: The Parcel in which the object should be written. This value cannot be `null`. <br /> |
| `flags` | `int`: Additional flags about how the object should be written. May be 0 or `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE`. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE` |