On 12 Sep 2016, at 20:39, Bouke Haarsma via swift-users <swift-users@swift.org> wrote:
> So the question remains on how to perform the casts using Swift? In general it’s best to avoid special casing your network protocols. The best option for doing that is <x-man-page://3/getaddrinfo> and <x-man-page://3/getnameinfo> calls. Specifically, with `getnameinfo`, if you specify `NI_NUMERICHOST` it’ll give you back an string representation of the address without hitting the DNS. Better yet, it starts with a (const sockaddr *), so you don’t need to extract the IP address from your CFData, you just need the base address of that data as the right type, and the `Data` type makes that easy. So, assuming `addrCF` is your CFData, here’s how to get a string representation. let addr = addrCF as NSData as Data let saLen = socklen_t(addr.count) let addrStr = addr.withUnsafeBytes { (sa: UnsafePointer<sockaddr>) -> String in var addrStrC = [CChar](repeating: 0, count: Int(NI_MAXHOST)) let err = getnameinfo(sa, saLen, &addrStrC, saLen, nil, 0, NI_NUMERICHOST | NI_NUMERICSERV) guard err == 0 else { fatalError() } return String(utf8String: addrStrC)! } Share and Enjoy -- Quinn "The Eskimo!" <http://www.apple.com/developer/> Apple Developer Relations, Developer Technical Support, Core OS/Hardware _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users