端口释放的优化

This commit is contained in:
祝发冬
2023-08-26 00:05:39 +08:00
parent 801450b271
commit 78c0096abb
2 changed files with 69 additions and 29 deletions
+40 -11
View File
@@ -51,16 +51,16 @@
_tag = 0;
_returnRandomNum = 0;
_connectionDone = false;
self._parameter = [[ESPTaskParameter alloc]init];
// check whether IPv4 and IPv6 is supported
NSString *localInetAddr4 = [ESP_NetUtil getLocalIPv4];
if (![ESP_NetUtil isIPv4PrivateAddr:localInetAddr4]) {
localInetAddr4 = nil;
}
NSString *localInetAddr6 = [ESP_NetUtil getLocalIPv6];
[self._parameter setIsIPv4Supported:localInetAddr4!=nil];
[self._parameter setIsIPv6Supported:localInetAddr6!=nil];
// self._parameter = [[ESPTaskParameter alloc]init];
//
// // check whether IPv4 and IPv6 is supported
// NSString *localInetAddr4 = [ESP_NetUtil getLocalIPv4];
// if (![ESP_NetUtil isIPv4PrivateAddr:localInetAddr4]) {
// localInetAddr4 = nil;
// }
// NSString *localInetAddr6 = [ESP_NetUtil getLocalIPv6];
// [self._parameter setIsIPv4Supported:localInetAddr4!=nil];
// [self._parameter setIsIPv6Supported:localInetAddr6!=nil];
[self setupClientUdpSocket];
[self setupServerUdpSocket];
@@ -143,11 +143,19 @@
{
return;
}
else
{
NSLog(@"airkiss socket error= %@",error.description);
}
if (![_clientUdpSocket beginReceiving:&error])
{
return;
}
else
{
NSLog(@"airkiss socket error= %@",error.description);
}
}
- (void)setupServerUdpSocket {
@@ -162,11 +170,19 @@
{
return;
}
else
{
NSLog(@"airkiss socket error= %@",error.description);
}
if (![_serverUdpSocket beginReceiving:&error])
{
return;
}
else
{
NSLog(@"airkiss socket error= %@",error.description);
}
}
#pragma mark - Event Response
@@ -178,6 +194,7 @@
if (_connectionFailure) {
_connectionFailure();
[self closeConnection];
}
}
@@ -202,11 +219,18 @@ withFilterContext:(id)filterContext
return;
}
NSString* serIp = [GCDAsyncUdpSocket hostFromAddress:address];
NSLog(@"serIp=%@",serIp);
serIp= [serIp stringByReplacingOccurrencesOfString:@"::ffff:" withString:@""];
uint16_t serPort = (int)[GCDAsyncUdpSocket portFromAddress:address];
//uint16_t serPort = (int)[GCDAsyncUdpSocket portFromAddress:address];
if ([serIp isEqualToString:_localIP]) {
return;//是本机的数据直接返回
}
else
{
NSLog(@"收到回包=%@",data);
}
// 设备连接WIFI成功后会像10000端口发送至少20个UDP广播包所附带的随机数
if (data != nil) {
UInt8 *bytes = (UInt8 *) [data bytes];
@@ -224,6 +248,7 @@ withFilterContext:(id)filterContext
NSString*macstring = [self.class dataToHexString:MacData];
if (_connectionSuccess) {
_connectionSuccess(macstring);
[self closeConnection];
}
}
}
@@ -321,4 +346,8 @@ withFilterContext:(id)filterContext
return data;
}
-(void)dealloc
{
NSLog(@"cnn dealloc");
}
@end