美文网首页
iOS SSDP发现协议实现

iOS SSDP发现协议实现

作者: 黑黝黝的搬砖王 | 来源:发表于2018-12-20 18:04 被阅读0次
  • 上篇文章中有介绍 主流智能家居无线协议,现在我们就来实际实现冷门的SSDP发现协议,之所以说冷门是因为笔者到目前为止才在对接中第一次使用,与之形成鲜明对比的是ZigBee协议 Wifi技术大受欢迎。

这里我们使用CocoaSSDP来实现,至于为什么要使用国外的第三方是实现SSDP发现协议,前期笔者也自己实现了,但是发现不同厂家路由器时有出现个别厂家不能发现的情况,所以就更换实现途径,使用CocoaAsyncSocket发现用CocoaAsyncSocket来发送Socket也无法实现,最后在google中发现国外小哥封装的CocoaSSDP兼容性做的比较好,同时适用于Mac和iOS的简单服务发现协议客户端库。

使用方法
  • 1、直接在使用的地方初始化SSDPServiceBrowser
    ssdpBrowser = [[SSDPServiceBrowser alloc] init];
    ssdpBrowser.delegate = self;
    [ssdpBrowser startBrowsingForServices:SSDPServiceType_YueMeTV];
  • 2、遵循协议,实现协议方法
#pragma mark --- SSDPServiceBrowserDelegate
- (void)ssdpBrowser:(SSDPServiceBrowser *)browser didNotStartBrowsingForServices:(NSError *)error
{
    DLog(@"SSDP Browser got error: %@", error);
}

- (void)ssdpBrowser:(SSDPServiceBrowser *)browser didFindService:(SSDPService *)service
{
    DLog(@"SSDP Browser found: %@", service);
    NSString *location = [service.location absoluteString];
    NSArray *deviceSnArray = [location componentsSeparatedByString:@"/"];
    NSString *deviceSn = [NSString stringWithFormat:@"%@#%@",deviceSnArray[deviceSnArray.count-2],deviceSnArray.lastObject];
    isSearchSuccess = YES;
    [self thirdBindWithDeviceSN:deviceSn];
}

- (void)ssdpBrowser:(SSDPServiceBrowser *)browser didRemoveService:(SSDPService *)service
{
    DLog(@"SSDP Browser removed: %@", service);
}
  • 3、最后在dealloc中让搜索停止
-(void)dealloc
{
    [ssdpBrowser stopBrowsingForServices];
}
注意事项
  • 1、SSDPServiceBrowser.m中 消息体中参数需要和厂家协议好
    NSString *userAgent = [self _userAgentString];
    
    return [NSString stringWithFormat:@"M-SEARCH * HTTP/1.1\r\n"
            "HOST: %@:%d\r\n"
            "MAN: \"ssdp:discover\"\r\n"
            "MX: 5\r\n"
            "ST: %@\r\n"
            "USER-AGENT: %@/1\r\n\r\n\r\n", SSDPMulticastGroupAddress, SSDPMulticastUDPPort, serviceType, userAgent];
}

  • 下方我们客户端和设备厂家SSDP发现协议,仅供参考
设备发现

相关文章

  • iOS SSDP发现协议实现

    上篇文章中有介绍 主流智能家居无线协议,现在我们就来实际实现冷门的SSDP发现协议,之所以说冷门是因为笔者到目前为...

  • 关于SSDP

    SSDP(简单服务发现协议)是应用层协议,是构成UPnP(通用即插即用)技术的核心协议之一。它为网络客户端(net...

  • iOS中的浅拷贝和深拷贝

    拷贝协议 在iOS开发中,只有实现了NSCopying | NSMutableCopy协议的对象才支持copy |...

  • Java - 抽象方法

    这个有点像iOS里面的协议的概念,继承了这个协议,就得实现协议规定的方法

  • iOS中的非正式协议是什么?

    简介: 在IOS2之前是没有引入@protocol协议的,IOS2之前实现协议主要是通过给NSObject添加Ca...

  • Objective-C总结----3.协议、分类、扩展

    简介 协议在协议中声明方法和属性,在遵守此协议的类中实现协议中声明的方法。在iOS开发中常用于代理设计模式,实现M...

  • iOS通过WKWebView、WKURLSchemeHandle

    KKQuickDraw iOS通过WKWebView、WKURLSchemeHandler协议实现HTML H5秒...

  • iOS UIWebView中添加手势

    iOS开发中,在UIWebView中添加手势的方法如下 协议实现:

  • FlexBox - YogaKit

    FlexBox - YogaKit FlexBox是一套通用的布局协议,YogaKit实现了这个协议,iOS端可以...

  • iOS 中的copy

    iOS 关于拷贝: 如何让自定义的类实现拷贝功能?实现 协议 -(id) copyWith...

网友评论

      本文标题:iOS SSDP发现协议实现

      本文链接:https://www.haomeiwen.com/subject/wcxukqtx.html