Alamofire无法处理UDP请求吗? NSPOSIXErrorDomain代码= 47

时间:2015-04-16 01:15:45

标签: ios swift udp alamofire

以下Swift代码始终返回:错误域= NSPOSIXErrorDomain代码= 47“操作无法完成。协议族不支持的地址族”UserInfo = 0x7fd460f5ec40 {_kCFStreamErrorCodeKey = 47,_kCFStreamErrorDomainKey = 1}

    let mSearchData = "M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nST: ssdp:all\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)
    let url = NSURL(string: "http://239.255.255.250:1900")!
    let mutableURLRequest = NSMutableURLRequest(URL: url)
    mutableURLRequest.HTTPBody = mSearchData
    Alamofire.request(mutableURLRequest)
        .response { (request, response, data, error) in
            println(error!)
    }

据我了解错误,它表示IP地址不在正常的TCP范围内,而是在UDP范围内。我无法找到任何方式告诉Alamofire或配置我的iOS应用程序以允许请求/响应作为多播处理。

我希望避免与GCDAsyncUdpSocket接口,因为我已经在100%快速实现中使用了Alamofire。

1 个答案:

答案 0 :(得分:0)

由于Alamofire是基于NSURLSession构建的,因此如果没有自定义NSURLProtocol实现并覆盖内置管理器,它就无法处理UDP请求。

您可以关注Ray Wenderlich's tutorial for NSURLProtocol,然后将NSURLProtocol插入到自定义NSURLSessionConfiguration的协议类中,以处理UDP或任何自定义协议。

使用GCDAsyncSocket实现这一点可能会更直接。