2016-09-12 18 views
0

UDPを使用して別のデバイスと通信する必要があるアプリがあります。 私はGCDAsyncUDPSocketフレームワークを使用しています。iOS NSURL接続エラー-1002

私は私が最初に私は2つの異なるソケット、送信ソケットと受信ソケットを実装してこの問題を回避するにはポート14550.

に受け取るまで以上返送する必要がありますポートを知りません。

最初に、両方のソケットを初期化し、受信ソケットでポート14550を開きます。

func wifiConnect() { 
    receiveSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue()) 
    transmitSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue()) 
    do { 
     try receiveSocket!.bindToPort(14550) 
     try transmitSocket!.enableBroadcast(true) 
     try receiveSocket!.beginReceiving() 
    } catch _ as NSError { print("Issue with setting up listener") } 
} 

次に、データがそのポートで受信されるまで待ってから、送信ソケットの送信者アドレスに接続します。

func udpSocket(sock: GCDAsyncUdpSocket, didReceiveData data: NSData, fromAddress address: NSData, withFilterContext filterContext: AnyObject?) { 
    if !udpConneced { 
     do { 
      try transmitSocket?.connectToAddress(address) 
     } catch let error { 
      NSLog("Error connecting to address. %@",String(error)) 
      return 
     } 
    } 
    dataReceived(data) 
} 

接続されていると、udpConnectedがtrueに設定され、機能が実行されます。

func udpSocket(sock: GCDAsyncUdpSocket, didConnectToAddress address: NSData) { 
    udpConnected = true 
    didConnect() 
} 

しかし、時には全体のアプリは、しかし、私は任意のURLを自分自身のいずれかのソケットを渡していない午前、クラッシュそしてこのエラー私は無効なURLであることを理解し

NSURLConnection finished with error - code -1002 

を与えています。

この問題の原因は何ですか?私は接続装置のIPを知っているので、私はそれを使用して送信ソケットを接続する必要がありますか?

ありがとうございます!

+0

質問には答えを含めないでください。問題を自分で解決した場合は、自分の*回答*を投稿することができます。ありがとうございました。 – Moritz

答えて

2

これを解決しました。 Testflightは完全なクラッシュログを表示しているとは言えませんでした。私は自分自身をクラッシュさせることに成功し、NSURLやGCDASYNCとは何の関係もないことを知りました。まれな状況で呼び出されている間に変数がゼロであることが原因でした。