diff --git a/Ifish.xcodeproj/project.pbxproj b/Ifish.xcodeproj/project.pbxproj index b9ca793..ba39fec 100644 --- a/Ifish.xcodeproj/project.pbxproj +++ b/Ifish.xcodeproj/project.pbxproj @@ -2483,6 +2483,7 @@ E5F1B03A21183E9700A879A1 /* setting-restart@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = E5F1B03721183E9600A879A1 /* setting-restart@3x.png */; }; E5F1B03B21183E9700A879A1 /* setting-restart.png in Resources */ = {isa = PBXBuildFile; fileRef = E5F1B03821183E9600A879A1 /* setting-restart.png */; }; E5F1B03C21183E9700A879A1 /* setting-restart@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E5F1B03921183E9700A879A1 /* setting-restart@2x.png */; }; + E5F1B03F21184F9400A879A1 /* IFishHotpotUDPHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E5F1B03D21184F9300A879A1 /* IFishHotpotUDPHelper.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -6285,6 +6286,8 @@ E5F1B03721183E9600A879A1 /* setting-restart@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "setting-restart@3x.png"; sourceTree = ""; }; E5F1B03821183E9600A879A1 /* setting-restart.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "setting-restart.png"; sourceTree = ""; }; E5F1B03921183E9700A879A1 /* setting-restart@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "setting-restart@2x.png"; sourceTree = ""; }; + E5F1B03D21184F9300A879A1 /* IFishHotpotUDPHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IFishHotpotUDPHelper.m; sourceTree = ""; }; + E5F1B03E21184F9400A879A1 /* IFishHotpotUDPHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IFishHotpotUDPHelper.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -9638,6 +9641,8 @@ 883E781E1D48A5E50030E075 /* SelectDeviceViewController.m */, 883E781F1D48A5E50030E075 /* SetViewController.h */, 883E78201D48A5E50030E075 /* SetViewController.m */, + E5F1B03E21184F9400A879A1 /* IFishHotpotUDPHelper.h */, + E5F1B03D21184F9300A879A1 /* IFishHotpotUDPHelper.m */, E56A745F20FCDBFC000129C9 /* ConnectHotpotViewController.h */, E56A746020FCDBFC000129C9 /* ConnectHotpotViewController.m */, E56A746120FCDBFC000129C9 /* ConnectHotpotViewController.xib */, @@ -16325,6 +16330,7 @@ 88779EAF1E28BD4200209ABA /* KanHuFuWuViewController.m in Sources */, 88602F661E12002600F3DB5D /* NTESSnapchatAttachment.m in Sources */, 88742C2A1D63F4EA0074F1F8 /* ShopCertificationViewController.m in Sources */, + E5F1B03F21184F9400A879A1 /* IFishHotpotUDPHelper.m in Sources */, 88602DBB1E10D97E00F3DB5D /* UIImage+MultiFormat.m in Sources */, 881671DF1EA5DE2B00BEBF23 /* UMComUserTableViewCell.m in Sources */, 881671EE1EA5DE2B00BEBF23 /* UMComGridView.m in Sources */, diff --git a/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m b/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m index 61fa72e..8109012 100644 --- a/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m +++ b/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m @@ -10,17 +10,15 @@ #import "ConnectHotspotTipViewController.h" #import "dataContorl.h" #import -#import "GCDAsyncUdpSocket.h" +#import "IFishHotpotUDPHelper.h" -@interface ConnectHotpotViewController () +@interface ConnectHotpotViewController () @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (weak, nonatomic) IBOutlet UITextField *nameLbl; @property (strong, nonatomic) IBOutletCollection(UIImageView) NSArray *dashView; @property (weak, nonatomic) IBOutlet UITextField *pwdTf; @property (weak, nonatomic) IBOutlet UIView *containerView; -@property (nonatomic, strong) GCDAsyncUdpSocket *socket; - @end @implementation ConnectHotpotViewController @@ -124,35 +122,14 @@ #pragma mark - UDP related - (void)sendToDeviceWithSSIDName:(NSString *)name andSSIDPWD:(NSString *)pwd { - self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; - NSError *error; - [self.socket bindToPort:9090 error:&error]; - [self.socket enableBroadcast:YES error:&error]; - if (error) { - [self.view makeToast:error.localizedDescription]; - } else { - [self.socket beginReceiving:&error]; - - } - [self.socket sendData:[self updmessageData:name ssidPwd:pwd] toHost:@"192.168.4.1" port:333 withTimeout:-1 tag:0]; + [IFishHotpotUDPHelper sharedInstance].delegate = self; + [[IFishHotpotUDPHelper sharedInstance] broadCaseUDPWith:name pwd:pwd]; } -- (NSData *)updmessageData:(NSString *)ssidName ssidPwd:(NSString *)ssidPwd { - return [dataContorl stringToHexData:[NSString stringWithFormat:@"%@\0%@\0", ssidPwd, ssidPwd]]; -} +#pragma mark - IFishHotpotUDPHelperDelegate -#pragma mark - GCDAsyncUdpSocketDelegate - -- (void)udpSocket:(GCDAsyncUdpSocket *)sock didSendDataWithTag:(long)tag { - [self.view makeToast:@"UDP指令发送成功"]; -} - -- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error { - [self.view makeToast:[NSString stringWithFormat:@"UDP指令发送失败:%@", [error localizedDescription]]]; -} - -- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(id)filterContext { - [self.view makeToast:[NSString stringWithFormat:@"接收到设备返回UDP数据:%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]]]; +- (void)udpHelperMessage:(NSString *)msg { + [self.view makeToast:msg]; } @end diff --git a/Ifish/controllers/leftcontrollers/IFishHotpotUDPHelper.h b/Ifish/controllers/leftcontrollers/IFishHotpotUDPHelper.h new file mode 100644 index 0000000..f32a41d --- /dev/null +++ b/Ifish/controllers/leftcontrollers/IFishHotpotUDPHelper.h @@ -0,0 +1,30 @@ +// +// IfishUDPBroadCastHelper.h +// Ifish +// +// Created by imac on 16/9/12. +// Copyright © 2016年 lianxiang. All rights reserved. +// + +#import +#import "AsyncUdpSocket.h" + +@protocol IFishHotpotUDPHelperDelegate + +- (void)udpHelperMessage:(NSString *)msg; + +@end + +@interface IFishHotpotUDPHelper : NSObject + +@property (nonatomic, strong) AsyncUdpSocket *clientSocket; + ++ (IFishHotpotUDPHelper *)sharedInstance; + +@property (nonatomic,strong) NSTimer *loopTimer; + +@property (nonatomic, weak) id delegate; + +-(void)broadCaseUDPWith:(NSString *)ssidName pwd:(NSString *)pwd; + +@end diff --git a/Ifish/controllers/leftcontrollers/IFishHotpotUDPHelper.m b/Ifish/controllers/leftcontrollers/IFishHotpotUDPHelper.m new file mode 100644 index 0000000..7154100 --- /dev/null +++ b/Ifish/controllers/leftcontrollers/IFishHotpotUDPHelper.m @@ -0,0 +1,114 @@ +// +// 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" + +@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)broadCaseUDPWith:(NSString *)ssidName pwd:(NSString *)pwd { + _ssidName = ssidName; + _pwd = pwd; + self.loopTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(sendLoopSoketdata) userInfo:nil repeats:YES]; +} + +-(void)sendLoopSoketdata{ + NSString* hostS = @"192.168.4.1"; + + self.clientSocket = [[AsyncUdpSocket alloc] initWithDelegate:self]; + //120.55.190.56 服务器IP 指令中用 + NSString *request=@"0007000000000000000000000000273132302e35352e3139302e353600000000000000bbbb0000"; + + 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); + AppDelegate *app =(AppDelegate*)[UIApplication sharedApplication].delegate; + [app.window makeToast:@"切换成功"]; + [self.loopTimer invalidate]; + return YES; + +} + +-(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{ + + [self.loopTimer invalidate]; + NSLog(@"关闭"); +} + + +-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{ + + NSLog(@"didSendData"); + [self postmsg:@"发送成功"]; +} + + +-(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