Ich versuche, eine SSDP Reaktion mit schnellen mit der Bibliothek CocoaAsyncSocket (https://github.com/robbiehanson/CocoaAsyncSocket)Empfangen von SSDP-Antwort unter Verwendung CocoaAsyncSocket in Swift
ich den M-Search-Befehl an die Multicast-Gruppe senden kann, erfolgreich zu empfangen und eine Antwort erhalten, Ich habe mir den Wireshark angesehen (http://i.imgur.com/pn6LB7R.png): Ich kann sehen, dass die M-Search-Pakete ausgehen und die Antworten zurückkommen, aber ich bekomme niemals die NSData in meiner Anwendung. (Btw ich suche gerade nach einem Roku im Moment)
Ich habe das GCDAsyncUdpSocketDelegate Delegat eingeführt und die didReceiveData Funktion hinzugefügt, jedoch erhalte ich nie Daten.
Ich vermute, es ist etwas falsch in diesem Abschnitt ist:
ssdpSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
ssdpSocket.bindToPort(ssdpPort, error: &error)
ssdpSocket.beginReceiving(&error)
ssdpSocket.enableBroadcast(true, error: &error)
ssdpSocket.connectToHost(ssdpAddres, onPort: ssdpPort, error: &error)
ssdpSocket.joinMulticastGroup(ssdpAddres, error: &error)
Bitte beachten Sie folgende Beispielcode:
import UIKit
class ViewController: UIViewController, GCDAsyncUdpSocketDelegate {
//ssdp stuff
var ssdpAddres = "239.255.255.250"
var ssdpPort:UInt16 = 1900
var ssdpSocket:GCDAsyncUdpSocket!
var ssdpSocketRec:GCDAsyncUdpSocket!
var error : NSError?
override func viewDidLoad() {
super.viewDidLoad()
ssdpSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
ssdpSocket.bindToPort(ssdpPort, error: &error)
ssdpSocket.beginReceiving(&error)
ssdpSocket.enableBroadcast(true, error: &error)
ssdpSocket.connectToHost(ssdpAddres, onPort: ssdpPort, error: &error)
ssdpSocket.joinMulticastGroup(ssdpAddres, error: &error)
//replace ST:roku:ecp with ST:ssdp:all to view all devices
let data = "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nMX: 3\r\nST: roku:ecp\r\nUSER-AGENT: iOS UPnP/1.1 TestApp/1.0\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)
ssdpSocket.sendData(data, withTimeout: 1, tag: 0)
}
func udpSocket(sock:GCDAsyncUdpSocket!,didConnectToAddress data : NSData!){
println("didConnectToAddress")
println(data)
}
func udpSocket(sock: GCDAsyncUdpSocket!, didReceiveData data: NSData!, fromAddress address: NSData!, withFilterContext filterContext: AnyObject!) {
println("didReceiveData")
println(data)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
könnten Sie die Probe als Referenz zur Verfügung stellen? –