空UDP数据包上的iOS CFSocket崩溃
我正在使用配置为UDP的CFSocket通过wifi发送数据。问题是,当我收到一个空的UDP数据包时,wifi突然停止工作。在那之后我再也不能接收或发送任何东西了。有人知道问题出在哪里吗?以下是我的配置和回调代码:空UDP数据包上的iOS CFSocket崩溃,ios,udp,wifi,cfsocket,Ios,Udp,Wifi,Cfsocket,我正在使用配置为UDP的CFSocket通过wifi发送数据。问题是,当我收到一个空的UDP数据包时,wifi突然停止工作。在那之后我再也不能接收或发送任何东西了。有人知道问题出在哪里吗?以下是我的配置和回调代码: void socketCallback(CFSocketRef cfSocket, CFSocketCallBackType type, CFDataRef address, const void *data, void *userInfo) { NSData * input
void socketCallback(CFSocketRef cfSocket, CFSocketCallBackType type, CFDataRef address, const void *data, void *userInfo)
{
NSData * inputData = (__bridge NSData*)data;
NSUInteger inputDataCapacity = inputData.length * 2;
if(inputDataCapacity > minimalFrameSize*2){
//DO STH
}
}
-(void) initNetworkCommunication
{
CFSocketContext socketContext = {0, (__bridge void *)(self), NULL, NULL, NULL};
_cfSocket = CFSocketCreate(kCFAllocatorDefault, AF_INET, SOCK_DGRAM, IPPROTO_UDP, kCFSocketAcceptCallBack | kCFSocketDataCallBack, (CFSocketCallBack)socketCallback, &socketContext);
if ( _cfSocket == NULL) {
// NSLog(@"CfSocketCreate failed");
}
else {
if( _cfSocket ) {
_addrData = [Utils createIpAddressDataRef:COMM_INT_LISTENER_ADDR];
int flag = 1;
CFSocketNativeHandle socket_handle = (CFSocketNativeHandle)CFSocketGetNative(_cfSocket);
setsockopt(socket_handle, SOL_SOCKET, SO_BROADCAST, &flag, sizeof(flag));
//set address of the socket to listen to
CFSocketSetAddress (_cfSocket, _addrData);
_cfSource = CFSocketCreateRunLoopSource(kCFAllocatorDefault, _cfSocket, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), _cfSource, kCFRunLoopDefaultMode);
CFRelease(_cfSource);
CFRelease(_cfSocket);
}
}
}
有时在wifi“崩溃”发生后,我在使用CFSocketSendData时会收到“EXC_BAD_ACCESS”