java ipv6校验_java - IPv6地址验证和规范化[关闭] - 堆栈内存溢出

该博客介绍了一种使用Java进行IPv4和IPv6地址有效性的adhoc方法检查。通过分析输入字符串中的冒号和点来区分IPv4和IPv6,并对每部分进行详细验证。如果发现无效字符或格式错误,程序将输出错误信息。
摘要由CSDN通过智能技术生成

我只是通过adhoc方法来检查IPV4和IPV6两种寻址方案的有效性:这是我的代码......我的代码总是欢迎更正。 如果我的解决方案有误,请原谅我。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

bool check6(string s)

{

for(int i=0;i

{

if((s[i] < '0' || s[i] > '9') && (s[i] < 'a' || s[i]> 'f') &&

(s[i] < 'A' || s[i] > 'F'))

return false;

}

return true;

}

bool check4(string s)

{

for(int i=0; i< s.length(); i++)

{

if(!(s[i]>= '0' && s[i] <= '9'))

return false;

}

stringstream ss(s);

int e;

ss >> e;

if( e < 0 || e > 255 )

return false;

else

return true;

}

int main()

{

string s;

cin>>s;

vector v;

int i=0;

int d=0;

if((s.find(":")!=std::string::npos ||

s.find("::")!=std::string::npos)&&

s.find(".")==std::string::npos)

{

int x=0;

while(i< s.length())

{

string s1 ="";

while(i< s.length() && s[i]!= ':')

{

s1+= s[i];

i++;

}

if(s1!="")

v.push_back(s1);

if((i+1)< s.length() && s[i]==':' && s[i+1]==':')

x++;

i++;

if(i< s.length())

d++;

}

if(x > 1 || d > 7 || v.size() > 8 || (x==1 && d >6))

{

cout<

return 0;

}

else if(d > 2 && v.size() ==0)

{

cout<

return 0;

}

else

{

for(int i=0;i< v.size();i++)

{

if((v[i]).length() > 4)

{

cout<

return 0;

}

else

{

if(!check6(v[i]))

{

cout<

return 0;

}

}

}

cout<

return 0;

}

}

else if(s.find(":")==std::string::npos && s.find(".")!=std::string::npos)

{

while(i< s.length())

{

string s1="";

while( i< s.length() && s[i]!='.')

{

s1+=s[i];

i++;

}

i++;

if(i< s.length())

d++;

v.push_back(s1);

}

if(d > 4 || v.size()> 4)

{

cout<

return 0;

}

else

{

for(int i=0;i

{

if((v[i]).length() > 3)

{

cout<

return 0;

}

if(!check4(v[i]))

{

cout<

return 0;

}

}

}

cout<

return 0;

}

cout<

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值