Как восстановить BindException: Не удается назначить запрошенный адрес? - PullRequest
0 голосов
/ 05 марта 2012

Мне нужно изменить IP-адрес хоста с клиента.Я использую команды UDP и MulticastSocket для получения IP-адреса этого хоста (currentIp) и использую этот IP-адрес для успешного установления TCP-соединения.Команда для изменения этого IP-адреса хоста требует DatagramSocket, поскольку мне нужно сначала получить MAC-адрес хост-устройства для включения в команду изменения IP-адреса.После установления TCP-соединения я закрываю сокет MulticastSocket UDP, чтобы открыть DatagramSocket, но получаю следующую ошибку:

java.net.BindException: Невозможно назначить запрошенный адрес: Невозможно связать

Есть ли что-то, что мне нужно сделать, кроме закрытия гнезда MulticastSocket, прежде чем пытаться получить сокет DatagramSocket с тем же номером порта, или я что-то упускаю?

DatagramSocket socket;
private boolean ChangeIpAddress(String newIp) {
    DatagramSocket socket;
    try {
        socket = new DatagramSocket(30718, InetAddress.getByName(currentIp));
    } catch (SocketException ex) {
        ...

1 Ответ

0 голосов
/ 05 марта 2012

Похоже, вы используете имя хоста с неверным IP-адресом.Вам нужно найти вас etc/hosts или там, где он определен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...