Folgend ein kleines UDP NWListener Beispiel als CommandLineApp
Alles anzeigen
Irgendwie verstehe ich nicht, wann die NWConnection conn aufgeräumt wird? Habe die Vermutung, dass das gar nicht passiert. Also dass da ein Leak drinnen ist. Das Ergebnis vom Profiler verstehe ich auch nicht so ganz im Moment. Weiß das wer?
Quellcode
- // Network.Framework UDP Broadcast Test
- // echo "hello hello" | socat - UDP-DATAGRAM:255.255.255.255:45678,broadcast
- /*
- while :
- do
- echo "hello" | socat - UDP-DATAGRAM:255.255.255.255:45678,broadcast
- sleep 0.333
- done
- */
- import Foundation
- import Network
- let listener = try NWListener(using: .udp, on: 45678)
- listener.stateUpdateHandler = { (state) -> Void in
- print("Listener state: \(state)")
- }
- listener.newConnectionHandler = { (conn) -> Void in
- conn.stateUpdateHandler = { (state) -> Void in
- print("Connection state: \(state)")
- }
- conn.receiveMessage() { (data, context, isComplete, error) in
- if let error = error {
- print("Error: \(error)")
- } else if let data = data {
- guard let str = String(data: data, encoding: .utf8) else {
- print("Failed to parse string!")
- return
- }
- print(str)
- }
- }
- conn.start(queue: .main)
- }
- listener.start(queue: .main)
- dispatchMain()