मैं जब पतों तारों के रूप में जमा हो जाती है के लिए एक समाधान है में है। तो यदि आप अपने एल्गोरिदम के उस हिस्से को बनाना चाहते हैं, तो आप यहां मेरे समाधान का उपयोग कर सकते हैं।
यह थोड़ा मुश्किल है, खासकर आईपीवी 6 के लिए। आईपीवी 6 में वैकल्पिक रूप से संपीड़ित सेगमेंट हो सकते हैं, जैसे 1 :: 1 जो 1: 0: 0: 0: 0: 0: 0: 1 के बराबर है, जो मुख्य कारण है कि यह मुश्किल है।
The IPAddress Java library किसी दिए गए सबनेट में पते खोजने के लिए mysql SQL उत्पन्न करेगा। लिंक इस समस्या का अधिक विस्तार से वर्णन करता है। अस्वीकरण: मैं प्रोजेक्ट मैनेजर हूं।
मूल एल्गोरिदम सबनेट पते का नेटवर्क अनुभाग लेना है, फिर उस खंड के प्रत्येक संस्करण को लें (उदाहरण के लिए ऊपर दो स्ट्रिंग पूर्ण पते 1 :: 1 के रूप हैं), फिर सेगमेंट की संख्या गिनें विभाजक, फिर मेल खाने वाले पते पर एक MySQL प्रतिलिपि करें, लेकिन मेल खाने वाले पते में कुल विभाजक भी गिनें।
public static void main(String[] args) throws IPAddressStringException {
System.out.println(getSearchSQL("columnX", "1.2.3.4/16"));
System.out.println(getSearchSQL("columnX", "1:2:3:4:5:6:7:8/64"));
System.out.println(getSearchSQL("columnX", "1::8/64"));
}
static String getSearchSQL(String expression, String ipAddressStr) throws IPAddressStringException {
IPAddressString ipAddressString = new IPAddressString(ipAddressStr);
IPAddress ipAddress = ipAddressString.toAddress();
IPAddressSection networkPrefix = ipAddress.getNetworkSection(ipAddress.getNetworkPrefixLength(), false);
StringBuilder sql = new StringBuilder("Select rows from table where ");
networkPrefix.getStartsWithSQLClause(sql, expression);
return sql.toString();
}
ouptut:
यहाँ नमूना कोड है
Select rows from table where (substring_index(columnX,'.',2) = '1.2')
Select rows from table where (substring_index(columnX,':',4) = '1:2:3:4')
Select rows from table where ((substring_index(columnX,':',4) = '1:0:0:0') OR ((substring_index(columnX,':',2) = '1:') AND (LENGTH (columnX) - LENGTH(REPLACE(columnX, ':', '')) <= 5)))
धन्यवाद, लेकिन इस सबनेट वर्ग जानने पर निर्भर है? – matiasf
@matiasf: यह है। अद्यतन पर एक नज़र डालें। – Jon
ग्रेट उत्तर - लेकिन आईपीवी 6 के बारे में क्या? क्या यह भी संभव है? – TSG