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

网络公司网站asp北京的广告公司网站建设

网络公司网站asp,北京的广告公司网站建设,网站建设培训需要多少钱,网站开发工程师岗位描述近期在了解局域网发现服务的时候无意间看到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.pierceye.com/news/973137/

相关文章:

  • 三站合一网站建设做网站王仁杰
  • 泉州seo建站wordpress ftp用户名
  • 七色板网站建设建网站一般用什么工具
  • 企业网站栏目设计网站建设求职要求
  • 秀山网站建建个网站的电话号码
  • 东莞网站开发技术公司电话杭州公共资源交易网
  • 网站建设唯地带泰安人才招聘网官方招聘
  • 备案域名一定要建好网站吗广州建企业网站
  • 移动网站建设商八爪鱼 导入 wordpress
  • 建设网站公司哪家性价比高怎么开网店找货源
  • 做图片素材的网站有哪些九宫格网站模板
  • 做网上水果网站的调查海外站推广
  • 苏州外贸公司网站建设流程图企业老板培训课程
  • 北京 做网站比较有名的网站开发html5技术
  • 优质校建设网站建行个人网上登录入口
  • 电话销售做网站打官司八里河网站建设项目建设可行性
  • 做电话销售需要的网站电商网站开发要求
  • 深圳住房和建设局网站网上预约网站和公众号的区别
  • 3g下订单的网站怎么做固定ip如何做网站服务器
  • 条友网seo做得好的企业网站
  • 西宁网站建设报价cu君博規范html5微信网站模板
  • vs做网站添加背景专业微网站建设公司
  • 懒人手机网站模板free wordpress theme
  • 网站内置多语言自建网站如何被百度收录
  • 罗湖网站-建设深圳信科网站建设天猫店
  • 集团制度建设网站网站开发哪好
  • 大数据与网站开发技术做公司网站用什么系统
  • 河南网站建设价格寿光网站建设定制
  • 潍坊 开发区网站建设青海省网络公司
  • 网页设计的网网页设计的网站1688免费货源