From f760907af3d2c6e446299628a3fce00377f698d0 Mon Sep 17 00:00:00 2001 From: xuemh Date: Wed, 25 Jul 2018 21:42:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0udp=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConnectHotpotViewController.m | 67 ++++++++++++++++++- .../ConnectHotpotViewController.xib | 8 ++- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m b/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m index fd03a37..921e7ac 100644 --- a/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m +++ b/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.m @@ -8,13 +8,19 @@ #import "ConnectHotpotViewController.h" #import "ConnectHotspotTipViewController.h" +#import "dataContorl.h" +#import +#import "GCDAsyncUdpSocket.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 @@ -80,5 +86,64 @@ [textField resignFirstResponder]; return YES; } +- (IBAction)setLinkBtnClicked:(id)sender { + if (self.nameLbl.text.length == 0) { + [self.view makeToast:@"请输入正确的路由器名称"]; + return; + } + BOOL isRight =[dataContorl isIncludeSpecialCharact:self.pwdTf.text]; + + if (!isRight) { + [self.view makeToast:@"路由器密码不能包含特殊字符,只能为数字字母下划线"]; + return; + } + + if (![[self currentWifiSSID].lowercaseString hasPrefix:@"ifish"]) { + [self.view makeToast:@"请先将手机连接到wifi:ifish-xxxx"]; + return; + } + + NSString *ssidName = self.nameLbl.text; + NSString *ssidPwd = self.pwdTf.text; + [self sendToDeviceWithSSIDName:ssidName andSSIDPWD:ssidPwd]; +} + +- (NSString *)currentWifiSSID { + NSString *ssid = @"Not Found"; + CFArrayRef myArray = CNCopySupportedInterfaces(); + if (myArray != nil) { + CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); + if (myDict != nil) { + NSDictionary *dict = (NSDictionary *)CFBridgingRelease(myDict); + ssid = [dict valueForKey:@"SSID"]; + } + } + return ssid; +} + +#pragma mark - UDP related + +- (void)sendToDeviceWithSSIDName:(NSString *)name andSSIDPWD:(NSString *)pwd { + self.socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; + [self.socket sendData:[self updmessageData:name ssidPwd:pwd] toHost:@"192.168.4.1" port:333 withTimeout:-1 tag:0]; +} + +- (NSData *)updmessageData:(NSString *)ssidName ssidPwd:(NSString *)ssidPwd { + return [dataContorl stringToHexData:[NSString stringWithFormat:@"%@\0%@\0", ssidPwd, ssidPwd]]; +} + +#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]]]; +} @end diff --git a/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.xib b/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.xib index e5d2fc8..00ed8b8 100644 --- a/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.xib +++ b/Ifish/controllers/leftcontrollers/ConnectHotpotViewController.xib @@ -12,6 +12,7 @@ + @@ -62,8 +63,8 @@ -