首页 > 编程知识 正文

java获取服务器ip地址,java获取客户端ip地址

时间:2023-05-05 10:59:30 阅读:162740 作者:3005

1、场景当前知道IP地址及其子网掩码的位数。 例如:

192.168.10.41/29

计算此IP所在的网段(192.168.10.40/29 )

2、实现思路根据计算机网络的知识,首先根据掩码位数可以知道要保留的ip位数(掩码位数/8为所需ip地址和网段地址等部分),然后掩码位数/8的馀数可以计算出非保留部分的具体网段数(将其二进制化后进行操作时,不管是十进制和二进制的转换还是http://ww .具体请参照代码实现)

3、代码实现(Java ) privatestaticstringcaculatenetworksegment (stringip,Integer maskBit ) throws exception string regex=' ^ d|25[0-5]|[1-9]\d|[1-9] (().' (1d{2}|2[0-4] )d|25(0-5)| //IP地址是正则表达式和IP.Matches(regex ) ) thrownewexception ) (“IP地址不符合标准”); } patternp=pattern.com pile (' [0-9] * ' ); matcherm=p.matcher (string.value of ) maskbit ); if (! m.matches (|mask bit=0||mask bit 32 ) { throw new Exception (子网掩码位不符合标准) ); } liststringotherbits=new ArrayList (; int intergeBit=maskBit/8; int remainderBit=maskBit % 8; liststringipbitlist=arrays.as list (IP.split (. ' ) ); //需要保留的liststringresultlist=ipbitlist.sublist (0,intergeBit ); //最终结果liststringfinalresult=new ArrayList (result list ); remainder bit==0) for(intI=resultlist.size ); iipBitList.size (; I ) {otherbits.add('0); (if (! otherBits.isEmpty () (finalresult.addall ) ) otherbits; } }else { //需要转换的integerremainbit=integer.parseint (ipbitlist.sublist (intergebit,intergeBit 1).get )0); if(resultlist.size ) )3) for ) intI=intergebit1; i 4; I ) {otherbits.add('0); }//将remain bit转换为二进制格式的stringbinarystring=integer.tobinarystring (remain bit ); //00101001 string new string=string.format (' d ',integer.parseint ) binarystring ); //00101 stringresultstring=new string.substring (0,remainderBit ); intresultstringinteger=integer.parseint (resultstring,2 ); stringleftmoveresultbinary=integer.tobinarystring (resultstringinteger (8- remainder bit ) ); stringleftmoveresultinteger=string.format (' d ',integer.parseint ) leftmoveresultbinary ); intfinremainderinteger=integer.parseint (leftmoveresultinteger,2 ); final result.add (string.value of (finremainderinteger ) ); if (! otherBits.isEmpty () (finalresult.addall ) ) otherbits; 返回(//网段的子网掩码位数return String.join )、finalResult )、/' maskBit; (4、代码测试

输出结果:

如果有问题的话欢迎大家指出来

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。