Zuverlässige Möglichkeit, Daten kontinuierlich von einer UDP-Verbindung in iOS Swift abzurufenIOS

Programmierung für iOS
Anonymous
 Zuverlässige Möglichkeit, Daten kontinuierlich von einer UDP-Verbindung in iOS Swift abzurufen

Post by Anonymous »

Ich versuche, einen Listener von einer Drohne zu meinem Gerät zu erstellen und die Daten von der Drohne über die UDP-Verbindung zu empfangen. Das Problem besteht darin, dass ich die Daten nur einmal lesen kann, wenn ich anfange, den Port abzuhören, an den die Drohne Daten sendet. Danach bekomme ich ein paar Protokolle, und ich weiß nicht, was sie sind.
Ich habe noch nie einen UDP-Socket in iOS implementiert.
Mein aktueller Code

Code: Select all

import UIKit
import Network

class ViewController: UIViewController {

private var listener: NWListener?

override func viewDidLoad() {
super.viewDidLoad()
startUDPListener()
}

private func startUDPListener() {
do {
let port: NWEndpoint.Port = 14550
listener = try NWListener(using: .udp, on: port)

listener?.stateUpdateHandler = { state in
switch state {
case .ready:
print("UDP Listener ready on port 14550")
case .failed(let error):
print(" Listener failed:", error)
default:
break
}
}

listener?.newConnectionHandler = { [weak self] connection in
print(" New UDP connection")
self?.receive(on: connection)
connection.start(queue: .main)
}

listener?.start(queue: .main)

} catch {
print(" Failed to start UDP listener:", error)
}
}

private func receive(on connection: NWConnection) {
connection.receiveMessage { [weak self] data, context, isComplete, error in
if let data = data, !data.isEmpty {
print("Received \(data.count) bytes")

// Example: raw bytes
print(data as NSData)

// TODO: Decode MAVLink / custom protocol here
}

if error == nil {
self?.receive(on: connection)
}
}
}

deinit {
listener?.cancel()
}
}
Ich erhalte alle diese Protokolle, aber nicht die Daten:

Code: Select all

UDP Listener ready on port 14550
New UDP connection
Received 40 bytes

nw_path_evaluator_create_flow_inner failed NECP_CLIENT_ACTION_ADD_FLOW (null) evaluator parameters: udp, definite, server, attribution: developer, reuse local address, context: Default Network Context (private), proc: 041A3A9F-1BE2-3236-A958-3B4930D1B4C2, local address: 0.0.0.0:14550
nw_path_evaluator_create_flow_inner NECP_CLIENT_ACTION_ADD_FLOW 464C637F-0893-4191-92AA-B82E76CB684E [17: File exists]
nw_endpoint_flow_setup_channel [C2 192.168.4.1:14550 initial channel-flow (satisfied (Path is satisfied), viable, interface: en0[802.11], ipv4, dns, uses wifi)] failed to request add nexus flow
nw_endpoint_flow_failed_with_error [C2 192.168.4.1:14550 initial channel-flow (satisfied (Path is satisfied), viable, interface: en0[802.11], ipv4, dns, uses wifi)] already failing, returning
nw_endpoint_handler_create_from_protocol_listener [C2 192.168.4.1:14550 failed channel-flow (satisfied (Path is satisfied), viable, interface: en0[802.11], ipv4, dns, uses wifi)] nw_endpoint_flow_pre_attach_protocols
nw_connection_create_from_protocol_on_nw_queue [C2] Failed to create connection from listener
nw_ip_channel_inbox_handle_new_flow nw_connection_create_from_protocol_on_nw_queue failed
{length = 40, bytes = 0xfd1c0000 3f01011e 0000f3cf 1600acb7 ...  38ba98dc 543b049a }
nw_path_evaluator_create_flow_inner failed NECP_CLIENT_ACTION_ADD_FLOW (null) evaluator parameters: udp, definite, server, attribution: developer, reuse local address, context: Default Network Context (private), proc: 041A3A9F-1BE2-3236-A958-3B4930D1B4C2, local address: 0.0.0.0:14550
nw_path_evaluator_create_flow_inner NECP_CLIENT_ACTION_ADD_FLOW 464C637F-0893-4191-92AA-B82E76CB684E [17: File exists]
nw_endpoint_flow_setup_channel [C3 192.168.4.1:14550 initial channel-flow (satisfied (Path is satisfied), viable, interface: en0[802.11], ipv4, dns, uses wifi)] failed to request add nexus flow
nw_endpoint_flow_failed_with_error [C3 192.168.4.1:14550 initial channel-flow (satisfied (Path is satisfied), viable, interface: en0[802.11], ipv4, dns, uses wifi)] already failing, returning
nw_endpoint_handler_create_from_protocol_listener [C3 192.168.4.1:14550 failed channel-flow (satisfied (Path is satisfied), viable, interface: en0[802.11], ipv4, dns, uses wifi)] nw_endpoint_flow_pre_attach_protocols
nw_connection_create_from_protocol_on_nw_queue [C3] Failed to create connection from listener
nw_ip_channel_inbox_handle_new_flow nw_connection_create_from_protocol_on_nw_queue failed
nw_path_evaluator_create_flow_inner failed NECP_CLIENT_ACTION_ADD_FLOW (null) evaluator parameters: udp, definite, server, attribution: developer, reuse local address, context: Default Network Context (private), proc: 041A3A9F-1BE2-3236-A958-3B4930D1B4C2, local address: 0.0.0.0:14550
nw_path_evaluator_create_flow_inner NECP_CLIENT_ACTION_ADD_FLOW 464C637F-0893-4191-92AA-B82E76CB684E [17: File exists]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post