NsdManager 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供 API,用於在區域網路上發現及廣告網路服務。
[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
- 繼承
- 屬性
備註
Network Service Discovery Manager 類別提供 API 來發現網路上的服務。 舉例來說,如果裝置A和裝置B透過 Wi-Fi 網路連接,裝置A上註冊的遊戲可以被裝置B上的遊戲發現。另一個範例是應用程式在網路上發現印表機。
API 目前支援基於 DNS 的服務發現,且發現僅限於多播 DNS 的本地網路。 DNS 服務發現的描述如下 http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt
API 是非同步的,應用程式的請求回應會透過獨立內部執行緒的監聽器回調進行。
API 支援三種主要操作——註冊、發現與解析。
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
需要在網路上宣告自己的應用程式,讓其他應用程式發現它,可以透過呼叫 #registerService來完成。 如果 Example 是一個基於 http 的應用程式,能向對等服務提供 HTML 資料,它可以註冊一個名為「Example」的名稱,服務類型為「_http._tcp」。 成功註冊會以回撥通知, RegistrationListener#onServiceRegistered 未註冊則透過 RegistrationListener#onRegistrationFailed
尋找 http 服務的對等應用程式可透過呼叫 #discoverServices發起「_http._tcp」的發現。 找到服務會以回撥通知通知, DiscoveryListener#onServiceFound 服務中斷則會在 DiscoveryListener#onServiceLost。
一旦對等應用程式發現「範例」http 服務,且需要讀取該服務的屬性或想從「範例」應用程式接收資料,就可以啟動解析 #resolveService ,以解析屬性、主機及埠細節。 成功解決會在 上 ResolveListener#onServiceResolved 通知,失敗則在 上被通知 ResolveListener#onResolveFailed。
應用程式可於 http://www.iana.org/form/ports-service. 現有服務可於以下網站找到 http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
Java 文件 android.net.nsd.NsdManager。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
欄位
| 名稱 | Description |
|---|---|
| ActionNsdStateChanged |
廣播意圖動作,指示網路服務發現是否啟用或停用。 |
| ExtraNsdState |
int 的查詢金鑰,用來指示網路服務發現是否啟用或停用。 |
| FailureAlreadyActive |
已淘汰.
表示該操作失敗,因為它已經啟動中。 |
| FailureBadParameters |
已淘汰.
表示服務因參數錯誤而無法解決。 |
| FailureInternalError |
已淘汰.
失敗以 、 |
| FailureMaxLimit |
已淘汰.
表示操作失敗,因為應用程式未完成的最大請求已達。 |
| FailureOperationNotRunning |
已淘汰.
表示停止操作失敗,因為它沒有在運行。 |
| FailurePermissionDenied |
已淘汰.
表示操作失敗,因為呼叫者未取得所需權限。 |
| NsdStateDisabled |
網路服務發現功能被停用 |
| NsdStateEnabled |
網路服務發現已啟用 |
| ProtocolDnsSd |
已淘汰.
基於 DNS 的服務發現協定 |
| ServicePermissionDenied |
已淘汰.
表示來電者不得註冊服務資訊回撥或解決服務。 |
| ServicePermissionGranted |
已淘汰.
表示來電者可以註冊服務資訊回撥或解決服務。 |
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
提供 API,用於在區域網路上發現及廣告網路服務。 (繼承來源 JavaObject) |
| JniPeerMembers |
提供 API,用於在區域網路上發現及廣告網路服務。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 (繼承來源 Object) |
方法
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
提供 API,用於在區域網路上發現及廣告網路服務。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
提供 API,用於在區域網路上發現及廣告網路服務。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
提供 API,用於在區域網路上發現及廣告網路服務。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
提供 API,用於在區域網路上發現及廣告網路服務。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
提供 API,用於在區域網路上發現及廣告網路服務。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
提供 API,用於在區域網路上發現及廣告網路服務。 (繼承來源 JavaObject) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
提供 API,用於在區域網路上發現及廣告網路服務。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |