刚刚有一个关于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);
}
}