iOS SSDP发现协议实现

  • 上篇文章中有介绍 主流智能家居无线协议,现在我们就来实际实现冷门的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发现协议,仅供参考
设备发现
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 米多桥阅读 216评论 0 0
  • 当生活没有按照意愿而展开 当一个个的意外跳上舞台 心头的乌云浓得化不开 连空气都变得稀薄 塞满了无奈 我问自己 要...
    阿桂爱原创阅读 413评论 12 40
  • 我爱上你的时候 并没有任何的原因和理由 仅是凭着人类最原始的冲动 我不知道会爱你多久 但我觉得 要是我对你厌倦了 ...
    大琳大琳阅读 146评论 0 0
  • 李苹瑕 焦点网络初级5期 平顶山持续原创分享第 385天 2018年06月11日 星期一 晴 变化 “人不能两次踏...
    暖暖的初春阅读 446评论 2 0