根据公司需要最近所了一个广播通信的项目,交给测试的时候发现在广播的过程中经常会出现断线的问题,回来自己亲测确实有这样的问题,但是很奇怪的是在下班后再去测试这样的问题就基本不会出现 ,什么原因呢很困惑 ,开始还怀疑是不是音频录入采样参数设置出了什么问题,最后确定不是,就分析是不是Socket连接出了问题 后来一看还真是。
Socket通信我使用的是GcdAsynsocket这个框架很强大的Socket框架
在代理方法 - (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err中输出error
你会看到这样的错误:ErrorDomain=GCDAsyncSocketErrorDomain Code=4 "Read operation timed out"UserInfo=0xa8db6a0 {NSLocalizedDescription=Read operation timed out}
如何修改:
在GcdAsynsocket.m方法中找到:
- (void)setupReadTimerWithTimeout:(NSTimeInterval)timeout
断点调试出你自己的超时时间,系统给的设置是 if (timeout >= 0.0),只需要把你的超时时间修改为你调试出的超时时间大就OK了!