日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android网络服务发现(NSD)协议的使用

發布時間:2025/7/14 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android网络服务发现(NSD)协议的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Android的網絡服務發現協議(NSD)能夠用于在小范圍的網絡中發現鄰近設備上的某個應用。這對于一些社交網絡、多人游戲類的應用會很有幫助。

Android的NSD的用法大致上分為四種操作:

1. 注冊網絡服務

2. 發現網絡服務

3. 連接網絡服務

4.?注銷網絡服務


使用NSD時一定要注意:

? ? 記得在Manifest中增加android.permission.INTERNET 權限,不然程序會崩潰。


一. 注冊網絡服務

注冊網絡服務須要兩樣東西: 網絡服務的信息(NsdServiceInfo)和注冊事件監聽器(NsdManager.RegistrationListener)

這兩樣東西齊全后就能夠通過:NsdManager.registerService發放來注冊網絡服務了。

實例代碼例如以下:

public void registerService(View view) {// 注意:注冊網絡服務時不要對端口進行硬編碼,通過例如以下這樣的方式為你的網絡服務獲取// 一個可用的端口號.int port = 0;try {ServerSocket sock = new ServerSocket(0);port = sock.getLocalPort();sock.close();} catch (Exception e) {Toast.makeText(getApplicationContext(), "can not set port", Toast.LENGTH_SHORT);}// 注冊網絡服務的名稱、類型、端口NsdServiceInfo nsdServiceInfo = new NsdServiceInfo();nsdServiceInfo.setServiceName("NSD_Test_Program");nsdServiceInfo.setServiceType("_http._tcp.");nsdServiceInfo.setPort(port);// 實現一個網絡服務的注冊事件監聽器。監聽器的對象應該保存起來以便之后進行注銷nsRegListener = new NsdManager.RegistrationListener() {@Overridepublic void onUnregistrationFailed(NsdServiceInfo arg0, int arg1) {Toast.makeText(getApplicationContext(), "Unregistration Failed", Toast.LENGTH_SHORT).show();}@Overridepublic void onServiceUnregistered(NsdServiceInfo arg0) {Toast.makeText(getApplicationContext(), "Service Unregistered", Toast.LENGTH_SHORT).show();}@Overridepublic void onServiceRegistered(NsdServiceInfo arg0) {Toast.makeText(getApplicationContext(), "Service Registered", Toast.LENGTH_SHORT).show();}@Overridepublic void onRegistrationFailed(NsdServiceInfo arg0, int arg1) {Toast.makeText(getApplicationContext(), "Registration Failed", Toast.LENGTH_SHORT).show();}};// 獲取系統網絡服務管理器,準備之后進行注冊NsdManager nsdManager = (NsdManager) getApplicationContext().getSystemService(Context.NSD_SERVICE);nsdManager.registerService(nsdServiceInfo, NsdManager.PROTOCOL_DNS_SD, nsRegListener); }

注意:registerService()方法是異步運行的,假設有一定要在服務注冊完成后才干運行的操作,請在onServiceResgistered事件中執這些操作。


二. 發現網絡服務

要發現附近的網絡服務須要定義一個網絡服務發現時間監聽器。代碼例如以下:

public void discoverService(View view) {nsDicListener = new NsdManager.DiscoveryListener() {@Overridepublic void onStopDiscoveryFailed(String serviceType, int errorCode) {Toast.makeText(getApplicationContext(), "Stop Discovery Failed", Toast.LENGTH_SHORT).show();}@Overridepublic void onStartDiscoveryFailed(String serviceType, int errorCode) {Toast.makeText(getApplicationContext(),"Start Discovery Failed", Toast.LENGTH_SHORT).show();}@Overridepublic void onServiceLost(NsdServiceInfo serviceInfo) {Toast.makeText(getApplicationContext(), "Service Lost", Toast.LENGTH_SHORT).show();}@Overridepublic void onServiceFound(NsdServiceInfo serviceInfo) {// 發現網絡服務時就會觸發該事件// 能夠通過switch或if獲取那些你真正關心的服務Toast.makeText(getApplicationContext(), "Service Found", Toast.LENGTH_SHORT).show();}@Overridepublic void onDiscoveryStopped(String serviceType) {Toast.makeText(getApplicationContext(), "Discovery Stopped", Toast.LENGTH_SHORT).show();}@Overridepublic void onDiscoveryStarted(String serviceType) {Toast.makeText(getApplicationContext(), "Discovery Started", Toast.LENGTH_SHORT).show();}};NsdManager nsdManager = (NsdManager) getApplicationContext().getSystemService(Context.NSD_SERVICE);nsdManager.discoverServices("_http._tcp", NsdManager.PROTOCOL_DNS_SD,nsDicListener); }

三. 連接網絡服務

通過定義一個網絡服務連接時間監聽器來輪詢解析到的網絡服務。能夠進一步獲取該網絡服務的地址和port然后決定是否進行連接,演示樣例代碼:

public void initResolveListener(View view) {nsResolveListener = new NsdManager.ResolveListener() {@Overridepublic void onServiceResolved(NsdServiceInfo arg0) {// 能夠再這里獲取對應網絡服務的地址及port信息,然后決定是否要與之建立連接。// 之后就是一些socket操作了}@Overridepublic void onResolveFailed(NsdServiceInfo arg0, int arg1) {}}; }

四. 注銷網絡服務

想要注銷網絡服務,應該事先保存和該網絡服務有關的句柄。通過NsdManager.unregisterService和NsdManager.stopServiceDiscovery方法來注銷網絡服務。實例代碼:

public void unregisterService(View view) {NsdManager nsdManager = (NsdManager) getApplicationContext().getSystemService(Context.NSD_SERVICE);nsdManager.stopServiceDiscovery(nsDicListener); // 關閉網絡發現nsdManager.unregisterService(nsRegListener); // 注銷網絡服務 }



假設轉載請注明出處:http://blog.csdn.net/gophers




總結

以上是生活随笔為你收集整理的Android网络服务发现(NSD)协议的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区二区在线看 | 日韩乱码在线观看 | 不卡三区 | 欧美美女视频 | 4438全国最大成人网 | 欧美性xxxxxxxxx | 久久99精品久久久久久 | 少妇又色又爽又黄的视频 | 国产精品久久久久久久蜜臀 | 欧美碰碰碰 | 中文字幕一区二区精品 | 三上悠亚亚洲一区 | 亚瑟av| 欧美一级片一区 | 主人性调教le百合sm | 亚洲国产97在线精品一区 | 日本黄网免费 | 麻豆视频在线观看免费网站 | 少妇毛片一区二区三区粉嫩av | 91久久 | 久久久久99精品成人片 | 日韩欧美高清在线视频 | 日韩精品在线观看中文字幕 | 熟女高潮一区二区三区 | 久久久久久久久久久久久久国产 | 喷潮在线 | 国产又色又爽 | 三级一区二区 | 三度诱惑免费版电影在线观看 | 久久精品国产露脸对白 | 欧美激情网址 | 日韩va视频 | 日本九九视频 | 亚洲欧美在线观看视频 | 中文字幕免 | 久久天堂av综合合色蜜桃网 | 国产精品国产精品国产 | 色呦呦视频在线 | 国产精品你懂的 | 97免费在线观看 | 精品国产av色一区二区深夜久久 | 天天操综合网 | 边吃奶边添下面好爽 | 美女久久久久 | 中文字幕.com | 亚洲综合久 | 亚洲第一综合色 | 网站一级片 | 91性高潮久久久久久久 | 欧美成人三级精品 | 91久色| 精品熟女一区二区 | 成人尹人 | 日韩精品视频播放 | 九九热视频在线播放 | 国产色图视频 | 老牛影视少妇在线观看 | 欧美精品午夜 | 香蕉蜜桃视频 | 美女搡bbb又爽又猛又黄www | 4438国产精品一区二区 | 国产精品久久久久久久久久久不卡 | 97人人澡人人爽人人模亚洲 | 一起草在线视频 | 天天躁日日躁狠狠躁 | 一级一级黄色片 | 激情免费av | 日韩在线视频在线 | 无码粉嫩虎白一线天在线观看 | 欧美大片免费高清观看 | 先锋影音中文字幕 | 国产欧美一区二区三区鸳鸯浴 | 手机在线看片国产 | 欧美精品免费在线观看 | 欧美在线v | 无套白嫩进入乌克兰美女 | 久久人体| 亚洲最大成人网色 | xxxxx色| 精品人妻无码一区二区性色 | 欧美亚洲另类小说 | 女女互磨互喷水高潮les呻吟 | 最新亚洲精品 | 97人人精品| 久久毛片视频 | 国产一线天粉嫩馒头极品av | 黄色三级三级三级 | 国产精品久久久久久久无码 | 国产传媒视频在线观看 | 91精品免费看 | 婷婷99| 91波多野结衣| 99久久99| 国产精品污www一区二区三区 | 亚洲福利视频一区二区 | 亚洲第一成网站 | 嫩草av在线 | 亚洲啊v在线 | 亚洲男人网 |