1. 程式人生 > >使用inet_pton驗證字串是否是合法的ipv4或ipv6地址

使用inet_pton驗證字串是否是合法的ipv4或ipv6地址

inet_pton是用來講ipv4和ipv6地址轉換成二進位制形式
inet_pton()函式原型:

 #include <arpa/inet.h>

   int inet_pton(int af, const char *src, void *dst);

返回值:
返回值為1 表示 函式執行成功
返回值為0 表示 對指定的協議來說 網路地址不是有效的的
返回值為-1 表示 地址族不是有效的 即af是無效值
所以 我們可以根據返回值判定是否是合法的ipv4或ipv6地址
程式碼如下:

#include <arpa/inet.h>
#include <stdio.h> int is_valid_ipv4(const char *ipv4) { struct in_addr addr; if(ipv4 == NULL) return 0; if(inet_pton(AF_INET, ipv4, (void *)&addr) == 1) return 1; return 0; } int is_valid_ipv6(const char *ipv6) { struct in6_addr addr6; if(ipv6 == NULL) return
0; if(inet_pton(AF_INET6, ipv6, (void *)&addr6) == 1) return 1; return 0; } #if 0 int main(void) { printf("%d\n", is_valid_ipv4("")); printf("%d\n", is_valid_ipv4("122")); printf("%d\n", is_valid_ipv4("122.1.1.1")); printf("%d\n", is_valid_ipv6("fec0::da24:bdff:fe76:cea2"
)); return 0; } #endif