I am sending data via using GCDAsyncUdpSocket in Swift CocoaAsyncSocket library, I can send data and receive from iOS 15 version successfully but when I try from iOS 17 version, I can't receive data in across side, how can I send and receive successfully in iOS 17 version, I shared at below send and receive methods,thanks.
Send Data
func setupAudio () {
self.audioEngine = AVAudioEngine()
self.socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: DispatchQueue.main)
}
func sendData() {
let data = Data("32 31 30 30 30 30 30 31 30 30 30 30 31 30 30 30 30 30 35 36 37".utf8)
DispatchQueue.global(qos: .background).async { [weak self] in
guard let self = self else { return }
self.socket.setIPv4Enabled(true)
self.socket.setIPv6Enabled(false)
do {
try self.socket.connect(toHost:"232.10.10.100" ?? "", onPort: 3434 ?? 0)
} catch {
self.socket.close()
}
do {
try self.socket.beginReceiving()
} catch {
self.socket.close()
}
self.socket.send(data, withTimeout: 0, tag: 0)
}
}
func udpSocket(_ socket: GCDAsyncUdpSocket, didConnectToAddress address: Data) {
print("Connected: \(address)")
}
func udpSocket(_ socket: GCDAsyncUdpSocket, didFailToConnectToAddress address: Data, withError error: Error?) {
print("Connection error: \(address), \(error!)")
}
from Other projects
func getData() {
socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: DispatchQueue.main)
DispatchQueue.global(qos: .background).async { [weak self] in
guard let self = self else { return }
do {
try self.socket.bind(toPort: 3434)
try self.socket.beginReceiving()
try self.socket.joinMulticastGroup("232.10.10.100")
self.audioPlayer.play()
print("Audio player started")
} catch {
print("Error starting to receive: \(error)")
}
}
}
func udpSocket(_ sock: GCDAsyncUdpSocket, didReceive data: Data, fromAddress address: Data, withFilterContext filterContext: Any?) {
audioPlayer.scheduleBuffer(getAudioBuffer(with: data), completionHandler: nil)
}