ifish/Ifish/controllers/IfishTabControllers/我的/mineControllers/pushSetControllrs/IfishUDPBroadCastHelper.m

118 lines
2.7 KiB
Objective-C

//
// IfishUDPBroadCastHelper.m
// Ifish
//
// Created by imac on 16/9/12.
// Copyright © 2016年 lianxiang. All rights reserved.
//
#import "IfishUDPBroadCastHelper.h"
#import "LxGetCurrentIp.h"
#import "AppDelegate.h"
@implementation IfishUDPBroadCastHelper
+ (IfishUDPBroadCastHelper *)sharedInstance{
static IfishUDPBroadCastHelper *sharedInstace = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstace = [[self alloc] init];
});
return sharedInstace;
}
-(void)broadCaseUDP{
self.loopTimer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(sendConnectHotspotSoketdata) userInfo:nil repeats:YES];
}
-(void)sendLoopSoketdata{
//收9954
NSString * currentIp = [LxGetCurrentIp currentIPAddress];
NSArray *array = [currentIp componentsSeparatedByString:@"."];
NSMutableArray *mutArr= [NSMutableArray arrayWithArray:array];
[mutArr replaceObjectAtIndex:3 withObject:@"255"];
NSArray *newarray=mutArr;
NSString* hostS = [newarray componentsJoinedByString:@"."];
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");
}
-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{
NSLog(@"dueToError%@",error);
[self.loopTimer invalidate];
}
-(void)dealloc{
[self.loopTimer invalidate];
}
@end