Хорошо, сначала я нашел то, что мне было нужно, с помощью API CFSocket, который позволит мне реализовать синхронизацию UDP.
CFSocket API
Сокеты - это самый базовый уровень сетевых коммуникаций. Розетка действует аналогично телефонной розетке. Он позволяет вам подключаться к другому сокету (локально или по сети) и отправлять данные в этот сокет.
Самая распространенная абстракция сокетов - это BSD-сокеты. CFSocket - это абстракция для сокетов BSD. CFSocket обеспечивает практически все функциональные возможности сокетов BSD и обеспечивает минимальные издержки и интегрирует сокет в цикл выполнения. CFSocket не ограничивается потоковыми сокетами (например, TCP), он может обрабатывать сокеты любого типа.
Вы можете создать объект CFSocket с нуля, используя функцию CFSocketCreate, или из сокета BSD, используя функцию CFSocketCreateWithNative. Затем вы можете создать источник цикла выполнения, используя функцию CFSocketCreateRunLoopSource, и добавить его в цикл выполнения с помощью функции CFRunLoopAddSource. Это позволит запускать функцию обратного вызова CFSocket всякий раз, когда объект CFSocket получает сообщение.
Независимо от того, я нашел AsyncSocket API.
CocoaAsyncSocket поддерживает TCP и UDP. Класс AsyncSocket предназначен для TCP, а класс AsyncUdpSocket - для UDP. Каждый класс описан ниже.
AsyncSocket - это сетевая библиотека сокетов TCP / IP, которая связывает CFSocket и CFStream. Он предлагает асинхронную операцию и собственный класс какао с поддержкой делегатов. Вот ключевые особенности:
Неблокирующее чтение и запись в очереди с необязательными таймаутами. Вы говорите ему, что читать или писать, и он позвонит вам, когда это будет сделано.
Автоматическая приемка розеток. Если вы скажете ему принимать соединения, он будет вызывать вас с новыми экземплярами для каждого соединения. Конечно, вы можете отключить их немедленно.
Поддержка делегатов. Ошибки, соединения, принятие, чтение завершений, запись завершений, выполнение и разъединения - все это приводит к вызову вашего метода делегата.
На основе цикла выполнения, а не на основе потока. Хотя вы можете использовать его в основном или рабочем потоке, вам это не нужно. Он вызывает методы делегата асинхронно, используя NSRunLoop. Методы делегата включают параметр сокета, позволяющий различать множество экземпляров.
Автономный в одном классе. Вам не нужно возиться с потоками или розетками. Класс обрабатывает все это.
Поддержка потоков TCP через IPv4 и IPv6.
Библиотека является общественным достоянием, изначально написана Дастином Воссом. Теперь доступно в публичных местах, чтобы разрешить и поощрять его постоянную поддержку.
AsyncUdpSocket - это сетевая библиотека сокетов UDP / IP, которая упаковывает CFSocket. Он работает почти так же, как версия TCP, но разработан специально для UDP. Сюда входят неблокирующие операции отправки / получения в очереди, полная поддержка делегатов, основанный на цикле выполнения, автономный класс и поддержка IPv4 и IPv6.
CocoaAsyncSocket
А вот ссылка на CFSocket
Ссылка на CFSocket