Sending data via using GCDAsyncUdpSocket in iOS 17 Swift

26 Views Asked by At

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)
        }
0

There are 0 best solutions below