iOS에서 브로드 캐스트 UDP 데이터 그램을 수신하려고합니다. 나는 꽤 좋은 것처럼 보이는 CocoaAsyncSocket 라이브러리를 사용하기 시작했다. 나는 이것을 다음과 같이 사용하고있다 :UDP 브로드 캐스트 데이터 수신
m_socket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
[m_socket setIPv6Enabled:NO];
NSError* error = nil;
if (![m_socket enableBroadcast:YES error:&error])
return log_warn(@"Failed to enable broadcast: %@.", error.description);
if (![m_socket bindToPort:43211 error:&error])
return log_warn(@"Failed to bind to port: %@.", error.description);
if (![m_socket beginReceiving:&error])
return log_warn(@"Failed to begin receiving.");
결과는 didReceiveData 콜백이 호출되지 않은 것 같다. 따라서 정규 소켓 API를 사용하려고했는데 일부 바이트를 얻을 수있는 것 같습니다. 단순히 this code을 사용했습니다.
위의 CocoaAsyncSocket 코드가 작동하지 않는 이유에 대해 궁금합니다. CocoaAsyncSocket의 내부를 읽음으로써 두 가지 접근법을 비교하려고 시도했지만 어떤 차이가 없어지는 것을 여전히 발견 할 수 없습니다. 위 코드에서 CocoaAsyncSocket을 사용하여 무언가를 놓치고 있습니까?
오류가 있습니까? 포트 또는 기타에 바인딩하는 데 실패했습니다. – Bharat
오류가 없습니다. 콜백이 아니고 반환 값이 아닙니다. –
응답 하시겠습니까? WireShark를 사용하여 패킷이 전송되고 응답을 받고 있는지 확인하십시오. – Bharat