динамический выбор IP-адреса из двух сетевых адаптеров на основе пользовательского ввода с помощью Java и демонстрационного подключения

#java #networking #ip #user-input #nic

#java #сеть #ip #пользовательский ввод #сетевой адаптер

Вопрос:

У меня есть следующий пример кода. Чего я хотел бы достичь, так это иметь возможность динамически выбирать, к какому IP-адресу подключаться, из двух разных вариантов, я хочу иметь возможность выбирать это на основе пользовательского ввода, но я точно не знаю, как этого добиться.

У меня есть сильное подозрение, что он должен использовать конструктор метода Socket (), в частности, первый экземпляр, который имеет подпись с 4 аргументами, которые должны позволить вам указать, используя общедоступный сокет (InetAddress address, int port, InetAddress localAddr, int LocalPort), вызывает метод IOException, вы можете использовать третий параметр, чтобы указать, какой IP-адрес использовать.

Я также слышал хорошие отзывы о методе bind ()

  import java.io.*;
 import java.net.*;
 import java.util.*;
 import static java.lang.System.out;

 public class ListNets {

public static void main(String args[]) throws SocketException {
    Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
    for (NetworkInterface netint : Collections.list(nets))
        displayInterfaceInformation(netint);
}

static void displayInterfaceInformation(NetworkInterface netint) throws SocketException {
    out.printf("Display name: %sn", netint.getDisplayName());
    out.printf("Name: %sn", netint.getName());
    Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
    for (InetAddress inetAddress : Collections.list(inetAddresses)) {
        out.printf("InetAddress: %sn", inetAddress);
    }
    out.printf("n");
 }
 }  
  

Этот код сверху выдает IP-адреса, но он также возвращает кучу «бесполезной» информации, такой как адрес Ethernet, который мне не нужен, как изолировать только интересующие меня IP-адреса?

Кроме того, какой эффективный способ продемонстрировать мой IP-адрес? Возможно, подключитесь к whois.com

Ответ №1:

Этот код сверху выдает IP-адреса, но он также возвращает кучу «бесполезной» информации, такой как адрес Ethernet, который мне не нужен, как изолировать только интересующие меня IP-адреса?

Просто. Не печатайте ничего, кроме IP-адресов. Удалите код, который печатает что-либо еще.

Что касается вашего «сильного подозрения», вам сказали в двух отдельных предыдущих вопросах, что вам следует использовать Socket конструктор с четырьмя аргументами.

Комментарии:

1. совершенно верно, и тем самым у меня возникло действительно очень сильное подозрение!

2. но что более важно, я пытался закомментировать весь этот мусор, но это бесполезно, я все еще получаю кучу бесполезного дерьма, я пробовал что-то подобное, но увы… неэффективно! если (InetAddress == ЧТО-ТО?!)

3. чувак, пожалуйста, помоги мне! я знаю, что это в ваших силах!