ตัวอย่างของบทความนี้บอกวิธีการของ IP และจำนวนเต็มใน Java แบ่งปันสำหรับทุกคนสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
1. คะแนนความรู้พื้นฐาน
ip-> จำนวนเต็ม:
แปลงที่อยู่ IP เป็นอาร์เรย์ไบต์ผ่านกะซ้าย (<<), (&), หรือ (|) การดำเนินการเหล่านี้เป็น int เป็น int
จำนวนเต็ม-> IP:
การดำเนินการกะขวา (>>>) เลื่อนไปทางขวาเป็น 24 บิตจากนั้นดำเนินการตัวดำเนินการ (&) 0xff
การทำงานกะขวา (>>>), เลื่อน 16 บิตแล้วดำเนินการตัวดำเนินการ (&) 0xff
การทำงานกะขวา (>>>) ย้ายไปทางขวาของ 8 บิตจากนั้นดำเนินการตัวดำเนินการ (&) 0xff
ค่าจำนวนเต็มดำเนินการกับตัวดำเนินการ (&) 0xff และจำนวนที่ได้คือ IP ขั้นตอนที่สี่
ประการที่สองตัวอย่างรหัส Java (ipv4util.java)
Michael.utils; นำเข้า Java.net.inetaddress; } catch (Exception e) {โยน unglemalargumentException ใหม่ (ipaddr + "เป็น IP ไม่ถูกต้อง") (String iPaddr) {byte [] ret = byte ใหม่ [4]; . "); ret [0] = (byte) (integer.parseint (iparr [0]); ret [1] = (byte) (จำนวนเต็ม. parseint (iparr [1]) & 0xff; ret [2] = ( BYTE) (Integer.ParseInt (Iparr [2]); ret [3] = (byte) (iparr [3]) & 0xff); ip "); te [] bytes) {ส่งคืน StringBuffer ใหม่ (). ผนวก (ไบต์ [0] & 0xff) .append ('.'). ผนวก (ไบต์ [1] & 0xff) .Appnd ('.') ผนวก (ไบต์ [2] & 0xff) .Appnd ('.') Addr | ; addr;} public Static int ipaddr (string ipaddr) {ลอง {ลอง {testr) ATIC BYTE [] Intbytes (int ipint) {byte [] ipaddr = byte ใหม่ [inaddrsz]; (ipint >>> 16) & 0xff); สตริงคงที่ inttoip (int ipint) {return newBuilder () .Append ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((" ((((((((((((((((((((((((((((((((((((((((((((((((((ipint >> .Appnd ((ipint >> 16) & 0xff) .Appnd ('.') String [] iparr = ipandmask.split ("/"); Trim ()); ถ้า (Netma SK <0 || NetMask> 31) {โยน unlegalargumentException ใหม่ ("IPANDMASK ที่ไม่ถูกต้องด้วย:" + IPANDMASK); & (0xFFFFFFFFFFF <(3 3 2 -NETMASK); int hostScope = (0xFFFFFFFF >>> netMask); ส่งคืน int ใหม่ [] {netip, netip + hostscope};} สตริงคงที่สาธารณะ [] getipaddrscope (string ipandmask) ] ipintarr = ipv4util ) int ipint; ipint};} netmaskint = ipv4util.iptoint (Mask); HostScope};} H (Exception E) {โยน unleglArgumentedException ใหม่ ("IP Scope IP Express IP:" + iPaddr + "หน้ากาก:" + หน้ากาก);}} สตริงคงที่สาธารณะ [] getipstscope [] ipv4util.getipintscope (IP addr, mask); return string ใหม่ [] {ipv4util .inttoip (ipintarr [0]), ipv4util.inttoip (ipintarr [0])}; โยนข้อยกเว้น {string ipaddr = "192.168.8.1"; ) {bytestr.Append (b);} else {bytestr.Append ("," "," " + b);}} system.out.println (" ip: " + ipaddr +" byte-> byte []: [" + bytestr +"]); );} else {bytestr.Append ("," + b);}} system.out .println ("ip:" + ipaddr + "byreg-> byte []: [" + bytestr + "]); ระบบ out.println ("byte []:" + bytestr + " -> ip:" + ipv4util.bytestoip (bytearr)); + " ->" + ipint); System.out .println ("int: + ipint +" -> ip: " + ipv4util.inttoip (ipint)); string ipandmask =" 192.168.1.1/24 " ipscope = ipv4util.getipintscope (ipandmask) ;; + "-> เซ็กเมนต์ที่อยู่ IP: [ + ipv4util.inttoip (ipscope [0]) +", " + ipv4util.inttoip (ipscope [1])); string ipaddr1 =" 192.168.1.1 " "; int [] ipscope1 = ipv4util.getipintscope (ipaddr1, ipmask1); "," ipscope1 [1] + "]); system.out.println (ipaddr1 +", " + ipmask1 +" -> เซ็กเมนต์ที่อยู่ IP: [" + ipv4util.inttoip (ipscope1 [0]) +" ipv4util.inttoip (ipscope1 [1]) + "]" ");}}
หวังว่าบทความนี้จะเป็นประโยชน์กับการออกแบบโปรแกรม Java ของทุกคน