inet_pton 用来验证IP是否合法
#include <arpa/inet.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int
invalid_ipaddr (char *str)
{
if (str == NULL || *str == '\0')
return 1;
union
{
struct sockaddr addr;
struct sockaddr_in6 addr6;
struct sockaddr_in addr4;
} a;
memset (&a, 0, sizeof (a));
if (1 == inet_pton (AF_INET, str, &a.addr4.sin_addr))
return 0;
else if (1 == inet_pton (AF_INET6, str, &a.addr6.sin6_addr))
return 0;
return 1;
}
int main(int argc, char *argv[]){
if(argc <2 ){
printf("Useage %s IP\n", argv[0]);
exit(1);
}
if((invalid_ipaddr(argv[1]) == 0)){
printf("%s is ip\n", argv[1]);
}else{
printf("%s is invalid_ipadd \n", argv[1]);
}
}
#./test "10.110.10.10"
10.110.10.10 is ip
# ./test "10.110.10.1a"
10.110.10.1a is invalid_ipadd
# ./test "10.110.10"
10.110.10 is invalid_ipadd
分享到:
相关推荐
对于IPv6,可以使用`inet_pton()`函数进行类似的操作,但需要处理`inet_pton()`不在所有Python版本中都支持的情况。 2. **使用正则表达式**: 另一种方法是使用正则表达式来匹配IP地址的格式。对于IPv4,可以创建...
2. **IP地址解析**:PHP的`inet_pton()`和`inet_ntop()`函数用于将IP地址在二进制和字符串格式之间转换。`ip2long()`和`long2ip()`则可以将IP地址转换为整型数值,便于计算和比较。 3. **网络通信**:PHP可以通过...
2. **IP合法性检查**:验证输入的IP地址是否有效,是否存在。这可以通过正则表达式匹配或者使用PHP内置函数`filter_var()`来实现。 3. **IP范围判断**:判断一个IP是否在一个指定的IP段内,这对于网络访问控制或...
可能的实现包括读取用户输入的IP地址字符串,使用`inet_pton()`函数进行解析,并进行一些操作,如验证地址的合法性,比较地址,或者将它们转换为另一种格式。 IPv6的其他关键特性包括流标签和优先级,用于QoS(服务...
例如,可以使用PHP的`filter_var()`函数验证IP的合法性,或者使用`inet_ntop()`和`inet_pton()`函数进行IP地址的字符串和二进制之间的转换。 此外,为了保护用户隐私,许多网站会采用IP匿名化处理,即将IP地址的...