我在我的应用程序中使用GCDAsyncSocket。我有几个问题。
当应用程序进入后台时,我喜欢关闭套接字。在 Suspend applicationDidEnterBackground 调用期间,我执行了以下代码,但它没有断开套接字。(我通过连接的主机检查这个)
[asyncSocket setDelegate:nil];
[asyncSocket disconnect];
[asyncSocket setDelegate:self];
一旦我将电话待机,尽管我打电话,插座并没有关闭。60 秒后,iOS 关闭套接字,因为我们处于后台,一切恢复正常,但发送方丢失了 60 秒的数据。我可能没有正确使用 API,但这也可能是一个问题。
下面我的其余代码供参考:
初始化
dispatch_queue_t socketQ = dispatch_queue_create("socketQueue", NULL);
asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:socketQ];
if(![asyncSocket connectedPort])
{
if (![asyncSocket acceptOnPort:WIFI_BOX_PORT error:&error])
{
NSLog(@"Problem with opening Port: %@", error);
}
else
{
NSLog(@"Port opened, waiting for connection");
}
}