186 lines
5.1 KiB
Objective-C
186 lines
5.1 KiB
Objective-C
//
|
|
// 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
|