I need to send out a UDP broadcast from an iPhone, and then listen for a UDP response with a timeout period. I have found Apple\'s UDPEcho example but I am not sure if it\'s wh
You can use cocoaAsyncSocket which is easier to use than apple native classes.
It support UDP with AsyncUdpSocket class.
AsyncUdpSocket is a UDP/IP socket networking library that wraps CFSocket. It works almost exactly like the TCP version, but is designed specifically for UDP. This includes queued non-blocking send/receive operations, full delegate support, run-loop based, self-contained class, and support for IPv4 and IPv6
I'd put 'recvfrom' on another thread using grand central dispatch, like this:
// Use grand central dispatch so we don't block the interface
dispatch_async(dispatch_get_global_queue(0, 0), ^{
recvfrom(...) // Receive with a 2s timeout
dispatch_async(dispatch_get_main_queue(), ^{ // The main thread stuff goes here
if (received ok) {
[self receivedData:some data];
} else {
[self timedOut];
}
});
});