即使网络信号非常强,也会触发NSStreamEventErrorOccurred

时间:2012-07-06 09:56:07

标签: iphone objective-c connection wifi nsstream

我已经实施了NSStream代表。我实现了与Witap Application

相同的功能

在那里,我实施了handleEvent委托

- (void) stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode{

  switch(eventCode) {

           case NSStreamEventOpenCompleted:
              {
                 [tcpServer release];
                 tcpServer = nil;               
                 break;
              }
          case NSStreamEventHasBytesAvailable:    
              {
                  //done my stuff here
              }
         case NSStreamEventErrorOccurred:    
              {


    UIAlertView *wifiLostAlert = [[UIAlertView alloc] initWithTitle:@"Wifi
 connection error" message:@"" delegate:nil cancelButtonTitle:@"Continue" otherButtonTitles:nil];
                     [wifiLostAlert show];
                     [wifiLostAlert release];
                      wifiLostAlert = nil;

              }

    }

在我的客户端网站中,他们报告了一个问题

  

“我们要么尝试向该邮件发送邮件的多次   学习者或同步设备她收到以下消息:“无线网络   连接错误。   同样发生在2个不同的网络,它不会很快恢复   即使网络是非常强大的信号。“

不幸的是,我无法在我的网站上重现此问题,而且它在其他客户端网站上也能正常工作!!。

关于这个问题的任何线索。对此有任何帮助表示赞赏。

谢谢。

1 个答案:

答案 0 :(得分:4)

我建议您为客户端提供更新版本,以显示有关实际发生错误的更多信息。

您可以使用以下方式获取有关错误的更多信息:

NSError* error = [stream streamError];

您可以在NSError Class Reference找到有关NSError的更多信息。

这样的事可能适合你的情况:

NSString* errorMessage = [NSString stringWithFormat:@"%@ (Code = %d")",
                                   [error localizedDescription],
                                   [error code]];

然后将UIAlertView更改为此:

UIAlertView *wifiLostAlert = [[UIAlertView alloc] 
                     initWithTitle:@"Stream Error" 
                           message:errorMessage
                          delegate:nil         
                 cancelButtonTitle:@"Continue" 
                 otherButtonTitles:nil];

这不会解决问题,但会为您和您的客户提供有关根本原因的更多信息。

例如,您可能会发现错误是“连接被拒绝”。这将指出一个问题不是WiFi信号强度,而是服务器端软件。

祝你好运!