def ipadd = addr.hostAddress
//println ipadd
String myString = new Integer(ipadd);
def pa = new ParametersAction([new StringParameterValue('IPADDR', myString)]);  
Thread.currentThread().executable.addAction(pa) 
println 'Script finished! \n';

मैं दास के आईपी पते को सिस्टम चर में जोड़कर सहेजने की कोशिश कर रहा हूं और इसे अगली नौकरी में पास कर रहा हूं। लेकिन जब मैं नौकरी चलाता हूं, तो मुझे अपवाद नीचे मिल रहा है: लॉग:

Slave Machine 2: X.X.X.X
java.lang.NumberFormatException: For input string: "X.X.X.X"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.<init>(Integer.java:867)
0
Angel491 26 पद 2017, 10:46

2 जवाब

सबसे बढ़िया उत्तर

आप ipad को पूर्णांक में नहीं डाल सकते। क्योंकि यह एक वैध पूर्णांक नहीं है। जैसा कि मैंने देखा है कि आईपैड को एक पूर्णांक में डालने के लिए आपको कोई अनिवार्य आवश्यकता नहीं है। इसलिए मेरी सिफारिश है कि String myString = new Integer(ipadd) लाइन को निम्नलिखित लाइन से बदल दिया जाए।

String myString = new String(ipadd)
0
aristotll 26 पद 2017, 11:06

किसी IPv4 पते में 3 बिंदु होते हैं, इसलिए इसे सीधे Integer के रूप में पार्स नहीं किया जा सकता है।

मुझे लगता है कि आप इसे आईपी 32 बिट्स का प्रतिनिधित्व करने वाले संबंधित int में बदलने की कोशिश कर रहे हैं। यह जावा में इस तरह किया जा सकता है:

public static int ipToInt32(String ip) {
    Inet4Address ipAddress;
    try {
        ipAddress = (Inet4Address) InetAddress.getByName(ip);
    } catch (UnknownHostException e) {
        throw new IllegalStateException("Cannot convert IP to bits: '" + ip + "'", e);
    }
    byte[] ipBytes = ipAddress.getAddress();
    return ((ipBytes[0] & 0xFF) << 24)
            | ((ipBytes[1] & 0xFF) << 16)
            | ((ipBytes[2] & 0xFF) << 8)
            | (ipBytes[3] & 0xFF);
}
1
Roman Puchkovskiy 26 पद 2017, 10:53