2016-09-12 3 views
0

UDP을 사용하여 다른 기기와 통신해야하는 앱이 있습니다. GCDAsyncUDPSocket 프레임 워크를 사용하고 있습니다.iOS NSURL 연결 오류 -1002

내가 처음 내가이 다른 소켓, 송신 소켓을 구현하는이 해결하기 위해 포트 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와 관련이 없다는 것을 알았습니다. 희소 한 상황에서 불려지는 변수가 없기 때문에 발생했습니다.