iOS 局域网内搜索硬件设备

iOS 局域网搜索可以使用两种方式。第一种方式局域网广播方式、此方式一般在3秒内就会相应。第二种方式也是比较笨拙的方式通过ping方式、这种方式一般是在硬件本身并不支持广播功能。此方法弊端:搜索时间长。推荐:可以有广播功能的使用第一种方式、没有广播功能和局域网内设备相对较少以及是连接手机wifi热点的情况。

第一种方式 广播:

推荐使用第三方GCDAsynSoket 代码如下:

 

@interface SearchCenter()<GCDAsyncUdpSocketDelegate>
//@property(nonatomic, strong) NSMutableArray *arpTableList;
@property(nonatomic, strong) GCDAsyncUdpSocket *gcdAsyncUdpSocket;
//广播定时器
@property(nonatomic, strong) NSTimer *broadcastTimer;
@end

-(GCDAsyncUdpSocket *)gcdAsyncUdpSocket
{
if (!_gcdAsyncUdpSocket) {

//: CameraBroadCastResponsePort 为设备回调消息过来的监听端口
_gcdAsyncUdpSocket = [[GCDAsyncUdpSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *err = nil;
[_gcdAsyncUdpSocket enableBroadcast:YES error:&err];
[_gcdAsyncUdpSocket bindToPort: CameraBroadCastResponsePort error:&err];
[_gcdAsyncUdpSocket beginReceiving:&err];
}
return _gcdAsyncUdpSocket;
}

-(NSTimer *)broadcastTimer
{
if (!_broadcastTimer) {
_broadcastTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(broadcastAction) userInfo:nil repeats:YES];
[_broadcastTimer setFireDate:[NSDate distantFuture]];
}
return _broadcastTimer;
}

#pragma mark 广播方式搜索

-(void)startUdpBroadcastAddress:(NSString *)broadcastAddress
{
_broadcastAddress = broadcastAddress;
_currentSearchStatus = KPXSearchStatusSearching;
_searchTimes = 0;
[self.deviceList removeAllObjects];
NSLog(@"开始udp广播");
[self.broadcastTimer setFireDate:[NSDate distantPast]];

}

//广播定时器
-(void)broadcastAction
{
//_broadcastAddress 为广播地址(该地址获取方式请下载代码查看)   CameraBroadCastMonitorPort为硬件设备监听端口
NS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值