How to check if a string is IPv4 or IPv6 or invalid in Swift

1 Answer

0 votes
import Foundation

func checkIPAddress(_ s: String) -> String {
    var ipv4 = in_addr()
    var ipv6 = in6_addr()

    // Try IPv4
    if s.withCString({ inet_pton(AF_INET, $0, &ipv4) }) == 1 {
        return "IPv4"
    }

    // Try IPv6
    if s.withCString({ inet_pton(AF_INET6, $0, &ipv6) }) == 1 {
        return "IPv6"
    }

    return "Invalid"
}

print(checkIPAddress("112.128.1.2"))
print(checkIPAddress("2001:0dc7:85b2:0000:0000:6d3e:0380:8651"))
print(checkIPAddress("999.999.999.999"))
print(checkIPAddress("abc"))



/*
run:

IPv4
IPv6
Invalid
Invalid

*/

 



answered Jan 20 by avibootz

Related questions

...