Требования: Учитывая адрес URL -адреса, например: http://www.cncounter.com/tools/shorturl.php, проанализировать соответствующий IP -адрес и номер порта.
ПРИМЕЧАНИЕ. Эта статья не включает в себя базовый протокол DNS, но непосредственно использует API, предоставленный платформой Java для работы.
DNS также является службой доменных имен, которая является службой доменных имен.
Мы знаем, что классы, связанные с URL -адресами в Java, включают Java.net.url и java.net.uri и т. Д., где URI является локатором ресурсов и может включать протоколы, такие как файл:
Итак, здесь мы используем класс URL, а код для получения номера порта выглядит следующим образом:
/ ** * Получить номер порта * * @param href url, ftp, http, nntp, ... и т. Д. * @return * @Throws ioException */ public static int parseport (string href) бросает ioException {// url url = new url (href); // номер порта; Если не указано в Href, это -1 int port = url.getport (); if (порт <0) {// Получить номер порта по умолчанию соответствующего порта протокола = url.getDefaultport (); } return Port; }Класс URL - это класс, который существовал на Java в первые дни. Внутренняя логика довольно сложна. Если вы заинтересованы, вы можете самостоятельно просмотреть соответствующий код реализации JDK.
Есть 2 способа получить номер порта:
getPort () должен получить номер порта, указанный в URL. Если не указано, он возвращает -1.
getDefaultport () должен получить номер порта по умолчанию, соответствующий протоколу, например, номер порта по умолчанию протокола HTTP составляет 80, номер порта по умолчанию протокола HTTPS составляет 443 и т. Д.
Затем мы смотрим на код, который извлекает часть хоста:
/ ** * Получить часть хоста * * @param href url, ftp, http, nntp, ... и т. Д. // Получить string детали хоста string = url.gethost (); возвратный хост; }
По сути, вы также можете напрямую перехватывать хост через регулярные выражения или строку, но если вы сталкиваетесь с сложными ситуациями, с ним нелегко справиться, например: сложные URL-адреса, такие как https: // yourname: [email protected]/mumu-osc/nicefish.git.
После извлечения доменного имени вы можете найти IP -адрес через класс java.net.inetaddress.
Код выглядит так:
/ ** * Разрешение IP -адреса в соответствии с доменным именем (хост) * @param Host name * @return * @Throws ioException */ public Static String parseip (String Host) Throws IoException {// Найти IP -адрес на основе доменного имени IneTADDress inETADDress = inetAdress.getByName (host); // IP -адрес строки ADDRES = inetAddress.gethostAddress (); обратный адрес; }Как видите, мы использовали статический метод inetAddress.getByname () для поиска IP.
Этот класс также обеспечивает другие статические методы, но обычно он не используется. Если вы заинтересованы, вы можете щелкнуть код с открытым исходным исходным кодом, чтобы посмотреть.
Затем мы выполняем простой тест с помощью метода Main ():
public static void main (string [] args) бросает ioException {// string href = "http://www.cncounter.com/tools/shorturl.php"; // номер порта int port = parseport (href); // доменное имя string host = parsehost (href); // IP -адрес строки ADDRED = parseip (host); // System.out.println ("host =" + host); System.out.println ("port =" + port); System.out.println ("address =" + адрес); }Результат исполнения:
host = www.cncounter.comport = 80address = 198.11.179.83
Зная IP и номер порта, мы можем подключиться непосредственно через розетку.
Конечно, если это протокол HTTP, вы можете использовать инструмент httpclient от Apache, который является мощным и простым в использовании. Но один из недостатков этой библиотеки заключается в том, что версии не совместимы, и API часто изменяется, и его необходимо обрабатывать в соответствии с конкретным номером версии при программировании.
Полный код выглядит так:
Импорт java.io.ioexception; import java.net.*;/***Найти IP -адрес*/public class testfindns {public static void main (string [] args) throws ioException {// string href = "http://www.cncounter.com/tools/shorturl.php"; // номер порта int port = parseport (href); // доменное имя string host = parsehost (href); // IP -адрес строки ADDRED = parseip (host); // System.out.println ("host =" + host); System.out.println ("port =" + port); System.out.println ("address =" + адрес); } / ** * Получить номер порта * * @param href url, ftp, http, nntp, ... и т. Д. // номер порта; Если не указано в Href, это -1 int port = url.getport (); if (порт <0) {// Получить номер порта по умолчанию соответствующего порта протокола = url.getDefaultport (); } return Port; } / ** * Получить часть хоста * * @param href url, ftp, http, nntp, ... и т. Д. // Получить string детали хоста string = url.gethost (); возвратный хост; } / ** * Разрешение IP -адреса на основе доменного имени (host) * * @param Host Host name * @return * @Throws ioException * / public Static String parseip (string host) throws ioException {// Найти IP -адрес на основе доменного имени inetAddress.getallbyname (host); InetAddress inetAddress = inetAddress.getbyName (host); // IP -адрес строки ADDRES = inetAddress.gethostAddress (); обратный адрес; }}Хорошо, пожалуйста, выполните соответствующую упаковку и обработку в соответствии с конкретной ситуацией.
Суммировать
Выше приведено метод Java, введенный редактором для вас путем запроса DNS/IP -адресов на основе URL. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!