刚刚有一个关于 NSStream 的 streamStatus 的问题。在我的应用程序中,我有一个输入流和一个输出流,可以很好地发送和接收数据。然而,早些时候,我注意到如果服务器出现故障,我不会在客户端收到任何连接中断的通知。经过几周的尝试研究和实施各种测试后,我发现它们都没有为我提供对不正确的服务器断开连接或崩溃的正确响应。然后,我创建了一个每 5 秒触发一次的计时器,并调用了一个检查 streamStatus 的函数。通过禁用 LAN 连接断开服务器后,我注意到客户端仍然注册为已连接。当我开始调试客户端时,我注意到 streamStatus 总是返回NSStreamStatusOpen
在我的输入和输出流上。
有什么我没有做的事情吗?我在下面附上了我如何调用和接收 streamStatus 的小片段。
初始化定时器(连接成功后调用):
connectionTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(CheckStream) userInfo:nil repeats:YES];
检查流:
- (void)CheckStream
{
NSStreamStatus status = [input streamStatus];
if(status == NSStreamStatusClosed || status == NSStreamStatusError)
{
NSLog(@"Error: %d", status);
}
status = [output streamStatus];
if(status == NSStreamStatusClosed || status == NSStreamStatusError)
{
NSLog(@"Error: %d", status);
}
}