当前位置: 首页 > news >正文

江西中创建设有限公司网站泰安市住房建设局网站

江西中创建设有限公司网站,泰安市住房建设局网站,做一个门户网站要多少钱,wordpress企业宣传电商近期在了解局域网发现服务的时候无意间看到Android 自带的#xff08;Network Service Discovery#xff09;网络发现服务#xff0c;在一番验证之后发现实现比较简单#xff0c;可靠性也高#xff0c;因此在这里做一个整理#xff0c;算是对自己知识做一个归档。 网络服…近期在了解局域网发现服务的时候无意间看到Android 自带的Network Service Discovery网络发现服务在一番验证之后发现实现比较简单可靠性也高因此在这里做一个整理算是对自己知识做一个归档。 网络服务发现NSD是一种机制它允许设备在本地网络上相互发现并提供服务。在Android平台上NSD API使得应用可以轻松地发现和注册网络上的服务。以下是NSD的一些关键点和如何在Android应用中使用它 1.NSD的基本概念 NSD实现了基于DNS的服务发现DNS-SD机制允许应用通过指定服务类型和名称来请求服务。这使得用户可以发现并连接到其他设备上运行的相同应用适用于文件共享、多人游戏等点对点应用。 2.注册服务 在本地网络上注册服务是可选的。如果需要注册服务首先需要创建一个NsdServiceInfo对象该对象提供了其他设备在决定是否连接到您的服务时所需的信息。服务名称是实例名称对网络上的其他设备可见且必须是唯一的。服务类型指定了应用使用的协议和传输层例如_http._tcp表示通过TCP运行的HTTP协议关于协议列表可以在该网页中查到 Service Name and Transport Protocol Port Number Registry 。 3.发现服务 要发现网络上的服务需要设置一个发现监听器并调用discoverServices()方法。监听器会通知应用何时启动、何时发生故障以及何时发现和丢失服务。 4.权限要求 使用NSD服务需要在应用的AndroidManifest.xml文件中添加网络权限如INTERNET权限。 5.示例代码 代码中有完整的注释这里就不再过多赘述。 注册服务的示例代码 public class NsdService implements NsdManager.RegistrationListener {private final NsdManager mNsdManager;/*** 自定义服务名称该名称对局域网内使用NSD查找本地服务的设备可见。* 名称必须唯一但是如果网络中有同名的服务安卓系统会自动处理冲突其中一个会被自动转换为类似MyService1这样的名称。*/private String mServiceName MyService;/*** 服务类型,即指定应用使用的协议和传输层。* 语法是“_ protocol ._ transportlayer ”,这里服务使用了TCP协议上的HTTP协议。* 想要提供打印服务例如一台网络打印机的应用应该将服务的类型设置为“_ipp._tcp”。* 其他协议可以IANA中查看到https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml*/private String mServiceType _http._tcp.;NsdService(Context context) {mNsdManager (NsdManager) context.getSystemService(Context.NSD_SERVICE);}/*** 注册服务* param port 网络服务的端口*/public void registerService(int port) {//创建了一个NsdServiceInfo 并传入端口、服务名称和协议NsdServiceInfo serviceInfo new NsdServiceInfo();//这里是你要告诉发现端你的网络服务的端口可能是你的server socket的启动端口切记非NSD的启动端口。serviceInfo.setPort(port);serviceInfo.setServiceName(mServiceName);serviceInfo.setServiceType(mServiceType);//注册NAS服务此处最后一个参数是NsdManager.RegistrationListener监听mNsdManager.registerService(serviceInfo,NsdManager.PROTOCOL_DNS_SD,this);}Overridepublic void onServiceRegistered(NsdServiceInfo NsdServiceInfo) {Log.d(NSD, Service registered: NsdServiceInfo.getServiceName());}Overridepublic void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {Log.e(NSD, Registration failed: Error code: errorCode);}Overridepublic void onServiceUnregistered(NsdServiceInfo arg0) {Log.d(NSD, Service unregistered);}Overridepublic void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {Log.e(NSD, Unregistration failed: Error code: errorCode);} }发现服务的示例代码 public class NsdDiscovery implements NsdManager.DiscoveryListener {private final NsdManager mNsdManager;/*** 服务类型,即指定应用使用的协议和传输层。* 语法是“_ protocol ._ transportlayer ”,这里服务使用了TCP协议上的HTTP协议。* 想要提供打印服务例如一台网络打印机的应用应该将服务的类型设置为“_ipp._tcp”。* 其他协议可以IANA中查看到https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml*/private String mServiceType _http._tcp.;NsdDiscovery(Context context) {mNsdManager (NsdManager) context.getSystemService(Context.NSD_SERVICE);}//发现服务public void discoverServices() {//发现服务需要添加DiscoveryListener监听关于发现服务所有的信息会在该回调内通知mNsdManager.discoverServices(mServiceType,NsdManager.PROTOCOL_DNS_SD,this);}Overridepublic void onStartDiscoveryFailed(String serviceType, int errorCode) {Log.e(NSD, Discovery start failed: Error code: errorCode);}Overridepublic void onStopDiscoveryFailed(String serviceType, int errorCode) {Log.e(NSD, Discovery stop failed: Error code: errorCode);}Overridepublic void onDiscoveryStarted(String serviceType) {Log.d(NSD, Service discovery started);}Overridepublic void onDiscoveryStopped(String serviceType) {Log.d(NSD, Discovery stopped: serviceType);}/*** 网络内发现了服务* param serviceInfo*/Overridepublic void onServiceFound(NsdServiceInfo serviceInfo) {Log.d(NSD, Service discovery success serviceInfo);//检查服务的类型确认这个类型我们的应用是否可以接入。if (!serviceInfo.getServiceType().equals(mServiceType)) {Log.d(NSD, Unknown Service Type: serviceInfo.getServiceType());}//比较找到服务的名称与本地服务的名称判断设备是否获得自己的合法的广播。else if (serviceInfo.getServiceName().contains(MyService)) {//如果是自己的服务需要再进一步解析服务端的信息,包括IP和端口。mNsdManager.resolveService(serviceInfo, new ResolveListener());}}Overridepublic void onServiceLost(NsdServiceInfo serviceInfo) {Log.e(NSD, service lost serviceInfo);}private class ResolveListener implements NsdManager.ResolveListener {Overridepublic void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {Log.e(NSD, Resolve failed errorCode);}//解析完成之后通知Overridepublic void onServiceResolved(NsdServiceInfo serviceInfo) {Log.d(NSD, Resolve Succeeded. serviceInfo);// 连接到服务端的代码//...}} } 不要忘记添加权限 uses-permission android:nameandroid.permission.INTERNET /
http://www.w-s-a.com/news/909155/

相关文章:

  • 做网站视频网站备案 新闻审批号
  • 织梦网站怎么居中视频网站开发与制作
  • 网站上海备案佛山网站seo哪家好
  • 品牌形象网站有哪些珠海市区工商年报在哪个网站做
  • 注册域名不建设网站seo外包服务方案
  • 如何进行外贸网站建设wordpress文章输入密码可见
  • 政务网站建设索引常州做网站信息
  • 南宁做网站找哪家好wordpress 更改首页
  • 一个人在家做网站建设品牌策划流程
  • 小网站广告投放wordpress页面添加js
  • 仿制别人的竞价网站做竞价犯法吗wordpress添加版块
  • wordpress主题 站长互联网站备案表
  • 广州品牌策划公司排行南宁seo网络推广公司
  • 营销型网站图片肯德基网站开发
  • 网站的外链是什么wordpress开启菜单
  • 文字字体是什么网站西安博达网站建设
  • 北京南昌网站建设网站查看空间商
  • 网站建设人员职责分布乐清市网站建设设计
  • 网站建设etw网站建设陕西
  • 网站文章页内链结构不好可以改吗wordpress英文模板下载
  • 北京天通苑 做网站哈尔滨快速网站排名
  • 网站开发负责人是什么职位试剂网站建设
  • 什么是展示型网站wordpress链接视频
  • 佳木斯城乡建设局网站过年做哪个网站能致富
  • 石家庄快速网站搭建设计公司属于什么企业
  • 中小学智慧校园建设平台网站sem竞价推广
  • 想创建一个网站官方网站建设推广
  • 江门网站优化民间it网站建设
  • 科研实验室网站建设wordpress加载模板
  • 用r做简易的网站软件园二期做网站的公司