// // IfishUDPBroadCastHelper.m // Ifish // // Created by imac on 16/9/12. // Copyright © 2016年 lianxiang. All rights reserved. // #import "IFishHotpotUDPHelper.h" #import "LxGetCurrentIp.h" #import "AppDelegate.h" #import "ConnectHotspotModel.h" #import "ResetDeviceModel.h" #import "RestartDeviceModel.h" @interface IFishHotpotUDPHelper () { NSString * _ssidName; NSString *_pwd; } @end @implementation IFishHotpotUDPHelper + (IFishHotpotUDPHelper *)sharedInstance{ static IFishHotpotUDPHelper *sharedInstace = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstace = [[self alloc] init]; }); return sharedInstace; } - (void)broadCastHotspotConnectCommandWith:(NSString *)ssidName pwd:(NSString *)pwd { _ssidName = ssidName; _pwd = pwd; self.loopTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(sendConnectHotspotSoketdata) userInfo:nil repeats:YES]; } - (void)broadCastRestCommand { self.loopTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(sendRestSocketData) userInfo:nil repeats:YES]; } - (void)sendRestSocketData { NSString* hostS = @"192.168.4.1"; self.clientSocket = [[AsyncUdpSocket alloc] initWithDelegate:self]; //120.55.190.56 服务器IP 指令中用 ResetDeviceModel *model = [ResetDeviceModel new]; NSString *request=[NSString stringWithFormat:@"%@", model.description]; NSData *data=[dataContorl stringToHexData:request]; UInt16 port = 333; UInt16 bindPort = 9954; NSError *error; [self.clientSocket enableBroadcast:YES error:&error]; [self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:1]; //本地接收端口 [self.clientSocket bindToPort:bindPort error:&error]; [self.clientSocket receiveWithTimeout:-1 tag:0]; } - (void)broadCastRestartCommand { self.loopTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(sendRestartSocketData) userInfo:nil repeats:YES]; } - (void)sendRestartSocketData { NSString* hostS = @"192.168.4.1"; self.clientSocket = [[AsyncUdpSocket alloc] initWithDelegate:self]; //120.55.190.56 服务器IP 指令中用 RestartDeviceModel *model = [RestartDeviceModel new]; NSString *request=[NSString stringWithFormat:@"%@", model.description]; NSData *data=[dataContorl stringToHexData:request]; UInt16 port = 333; UInt16 bindPort = 9954; NSError *error; [self.clientSocket enableBroadcast:YES error:&error]; [self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:1]; //本地接收端口 [self.clientSocket bindToPort:bindPort error:&error]; [self.clientSocket receiveWithTimeout:-1 tag:0]; } -(void)sendConnectHotspotSoketdata{ NSString* hostS = @"192.168.4.1"; self.clientSocket = [[AsyncUdpSocket alloc] initWithDelegate:self]; //120.55.190.56 服务器IP 指令中用 ConnectHotspotModel *model = [ConnectHotspotModel new]; model.ssidName = _ssidName; model.pwd = _pwd; NSString *request=[NSString stringWithFormat:@"%@", model.description]; NSData *data=[dataContorl stringToHexData:request]; UInt16 port = 333; UInt16 bindPort = 9954; NSError *error; [self.clientSocket enableBroadcast:YES error:&error]; [self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:1]; //本地接收端口 [self.clientSocket bindToPort:bindPort error:&error]; [self.clientSocket receiveWithTimeout:-1 tag:0]; } -(BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port { NSString* result; result = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; NSLog(@"didReceiveData%@",result); NSLog(@"port%hu",port); IFishUDPHelperBackMsgModel *model = [[IFishUDPHelperBackMsgModel alloc] initWithData:data]; if ([model.result isEqualToString:@"01"]) { if ([self.delegate respondsToSelector:@selector(udpHelperCommandExecutedSuccess:)]) { [self.delegate udpHelperCommandExecutedSuccess:model]; } } else { AppDelegate *app =(AppDelegate*)[UIApplication sharedApplication].delegate; [app.window makeToast:[NSString stringWithFormat:@"收到答复:%@", result]]; } [self.loopTimer invalidate]; return YES; } -(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{ [self.loopTimer invalidate]; NSLog(@"关闭"); } -(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{ NSLog(@"didSendData"); } -(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{ NSLog(@"dueToError%@",error); [self postmsg:error.localizedDescription]; [self.loopTimer invalidate]; } -(void)dealloc{ [self.loopTimer invalidate]; } - (void)postmsg:(NSString *)msg { if ([self.delegate respondsToSelector:@selector(udpHelperMessage:)]) { [self.delegate udpHelperMessage:msg]; } } @end