Skip to content

Instantly share code, notes, and snippets.

@mrmitew
Created August 1, 2018 18:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrmitew/8eb86ec57d8240d3fc2808a754c17842 to your computer and use it in GitHub Desktop.
Save mrmitew/8eb86ec57d8240d3fc2808a754c17842 to your computer and use it in GitHub Desktop.
Extension functions for NetService and NSData that provide an easy way to get IPV4 as String from any resolved NetService
// Example usage can be found in the following repository: https://github.com/mrmitew/Bonjour-iOS
extension NetService {
func getIpV4() -> String? {
if let ipData = self.addresses?.first {
return (ipData as NSData).getIpV4()
}
return nil
}
}
extension NSData {
func getIpV4(port: Int? = nil) -> String {
var ip1 = UInt8(0)
getBytes(&ip1, range: NSMakeRange(4, 1))
var ip2 = UInt8(0)
getBytes(&ip2, range: NSMakeRange(5, 1))
var ip3 = UInt8(0)
getBytes(&ip3, range: NSMakeRange(6, 1))
var ip4 = UInt8(0)
getBytes(&ip4, range: NSMakeRange(7, 1))
if port != nil {
return String(format: "%d.%d.%d.%d:%d", ip1, ip2, ip3, ip4, port!)
} else {
return String(format: "%d.%d.%d.%d", ip1, ip2, ip3, ip4)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment