socket更换为GCDSocket

This commit is contained in:
祝发冬 2022-06-26 14:41:21 +08:00
parent 26a52f68df
commit 7a8e8e46d9
2 changed files with 55 additions and 11 deletions

View File

@ -8,6 +8,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "AsyncUdpSocket.h" #import "AsyncUdpSocket.h"
#import "GCDAsyncUdpSocket.h"
#import "IFishUDPHelperBackMsgModel.h" #import "IFishUDPHelperBackMsgModel.h"
@protocol IFishHotpotUDPHelperDelegate<NSObject> @protocol IFishHotpotUDPHelperDelegate<NSObject>
@ -18,9 +19,9 @@
@end @end
@interface IFishHotpotUDPHelper : NSObject <AsyncUdpSocketDelegate> @interface IFishHotpotUDPHelper : NSObject <AsyncUdpSocketDelegate,GCDAsyncUdpSocketDelegate>
@property (nonatomic, strong) AsyncUdpSocket *clientSocket; @property (nonatomic, strong) GCDAsyncUdpSocket *clientSocket;
+ (IFishHotpotUDPHelper *)sharedInstance; + (IFishHotpotUDPHelper *)sharedInstance;

View File

@ -46,7 +46,7 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
- (instancetype)init { - (instancetype)init {
if (self = [super init]) { if (self = [super init]) {
self.clientSocket = [[AsyncUdpSocket alloc] initWithDelegate:self]; self.clientSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
self.bindok=NO; self.bindok=NO;
[self bind]; [self bind];
} }
@ -110,7 +110,8 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
UInt16 port = 333; UInt16 port = 333;
self.tag = 2; self.tag = 2;
[self.clientSocket receiveWithTimeout:-1 tag:self.tag]; // [self.clientSocket receiveWithTimeout:-1 tag:self.tag];
[self.clientSocket beginReceiving:nil];
[self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:self.tag]; [self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:self.tag];
} }
@ -131,7 +132,8 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
UInt16 port = 333; UInt16 port = 333;
self.tag = 1; self.tag = 1;
[self.clientSocket receiveWithTimeout:-1 tag:self.tag]; //[self.clientSocket receiveWithTimeout:-1 tag:self.tag];
[self.clientSocket beginReceiving:nil];
[self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:self.tag]; [self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:self.tag];
} }
@ -148,13 +150,15 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
UInt16 port = 333; UInt16 port = 333;
self.tag = 0; self.tag = 0;
[self.clientSocket receiveWithTimeout:-1 tag:self.tag]; // [self.clientSocket receiveWithTimeout:-1 tag:self.tag];
[self.clientSocket beginReceiving:nil];
BOOL send= [self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:self.tag]; //BOOL send=
if (!send) [self.clientSocket sendData:data toHost:hostS port:port withTimeout:-1 tag:self.tag];
{ // if (!send)
[self postmsg:@"发送失败"]; // {
} // [self postmsg:@"发送失败"];
// }
} }
- (void)closeComplete:(void (^)(void))block - (void)closeComplete:(void (^)(void))block
{ {
@ -184,6 +188,24 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
} }
return YES; return YES;
}
-(void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(id)filterContext
{
[self.loopTimer invalidate];
self.loopTimer = nil;
NSString* result = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
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]];
}
// return YES;
} }
-(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{ -(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{
@ -193,6 +215,14 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
self.closeBlock(); self.closeBlock();
} }
} }
-(void)udpSocketDidClose:(GCDAsyncUdpSocket *)sock withError:(NSError *)error
{
[self postmsg:@"连接关闭"];
self.bindok=NO;
if (self.closeBlock) {
self.closeBlock();
}
}
-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{ -(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{
@ -201,6 +231,13 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
[self postmsg:@"指令发送"]; [self postmsg:@"指令发送"];
} }
-(void)udpSocket:(GCDAsyncUdpSocket *)sock didSendDataWithTag:(long)tag
{
NSLog(@"didSendData");
[self postmsg:@"指令发送"];
}
-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{ -(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{
@ -208,6 +245,12 @@ static IFishHotpotUDPHelper *sharedInstace = nil;
NSLog(@"dueToError%@",error); NSLog(@"dueToError%@",error);
[self postmsg:[NSString stringWithFormat:@"Socket连接失败:%@",error.localizedDescription]]; [self postmsg:[NSString stringWithFormat:@"Socket连接失败:%@",error.localizedDescription]];
} }
-(void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error
{
NSLog(@"dueToError%@",error);
[self postmsg:[NSString stringWithFormat:@"Socket连接失败:%@",error.localizedDescription]];
}
-(void)dealloc{ -(void)dealloc{