Всем привет! Немного запутался, не могу разобраться, почему не вызывается метод “receiveData” протокола “ServerUDPDelegate”. Причем в классе ViewController всё работает отлично , но вот только в классе ArtNet не получаеться сделать тоже самое, подскажите пожалуйста, где чего забыл?
class ViewController: UIViewController, UITextFieldDelegate {
let serverUDP = ServerUDP()
let artNet = ArtNet()
override func viewDidLoad() {
super.viewDidLoad()
serverUDP.delegate = self
}
extension ViewController: ServerUDPDelegate {
func receiveData(data: Data, address: String) {
TextView.text.append("\(data)\n\(address)\n\n")
TextView.textColor = UIColor.green
}
}
import UIKit
import CocoaAsyncSocket
protocol ServerUDPDelegate: class {
func receiveData(data: Data, address: String)
}
class ServerUDP: NSObject, GCDAsyncUdpSocketDelegate {
weak var delegate: ServerUDPDelegate?
let IP = "255.255.255.255"
let destinationIP = "255.255.255.255"
let PORT:UInt16 = 6454
var socket:GCDAsyncUdpSocket!
override init() {
super.init()
setupConnection()
}
func setupConnection(){
socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: DispatchQueue.main)
do {
try socket.bind(toPort: PORT)
}
catch {
print("Binding error: ", error.localizedDescription)
}
do {
try socket.beginReceiving()
}
catch {
print("Connecting error: ", error.localizedDescription)
}
do {
try socket.enableBroadcast(true)
}
catch {
print("brodcust error: ", error.localizedDescription)
}
}
func udpSocket(_ sock: GCDAsyncUdpSocket, didReceive data: Data, fromAddress address: Data, withFilterContext withFilterContex: Any?) {
var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST))
do {
try address.withUnsafeBytes { (pointer:UnsafePointer<sockaddr>) -> Void in
guard getnameinfo(pointer, socklen_t(address.count), &hostname, socklen_t(hostname.count), nil, 0, NI_NUMERICHOST) == 0 else {
throw NSError(domain: "domain", code: 0, userInfo: ["error":"unable to get ip address"])
}
}
} catch {
print(error)
return
}
let senderAddress = String(cString:hostname)
delegate?.receiveData(data: data, address: senderAddress)
}
}
import UIKit
class ArtNet: NSObject {
let serverUDP = ServerUDP()
override init() {
super.init()
serverUDP.delegate = self
}
}
extension ArtNet: ServerUDPDelegate {
func receiveData(data: Data, address: String) {
print("\(data) did receve from address \(address)\n")
}
}