java.net.BindException в Java с примерами

Опубликовано: 2 Сентября, 2022

Исключение java.net.BindException возникает при возникновении ошибки привязки, когда приложение пытается привязать сокет к локальному адресу и порту. В основном это может происходить по двум причинам: либо порт уже используется (из-за другого приложения), либо запрошенный адрес просто не может быть назначен этому приложению. BindException наследуется от класса SocketException , таким образом показывая, что существует ошибка, связанная с созданием или доступом к сокету.

Конструкторы

Для BindException доступны следующие конструкторы:

  • BindException(): создает простой экземпляр класса BindException без подробного сообщения.
  • BindException(String msg): создает экземпляр класса BindException с указанным сообщением в качестве причины возникновения ошибки привязки.

Резюме метода

  1. Методы, унаследованные от класса java.lang.Throwable:
    addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, setStackTrace, toString.
  2. Методы, унаследованные от класса java.lang.Object:
    клонировать, равнять, финализировать, получить класс, хэш-код, уведомить, уведомить всех, подождать.

Пример:

В приведенном ниже примере мы создали класс Ex_BindException для демонстрации BindException:

Java




// java.net.BindException in Java with Examples
  
import java.io.*;
import java.net.*;
public class Ex_BindException {
  
    // Creating a variable PORT1 with arbitrary port value
    private final static int PORT1 = 8000;
  
    public static void main(String[] args)
        throws IOException
    {
  
        // Creating instance of the ServerSocket class
        // and binding it to the arbitrary port
        ServerSocket socket1 = new ServerSocket(PORT1);
  
        // Creating another instance of the ServerSocket
        // class and binding it to the same arbitrary
        // port,thus it gives a BindException.
        ServerSocket socket2 = new ServerSocket(PORT1);
        socket1.close();
        socket2.close();
    }
}

Выход:

В приведенном выше коде мы сначала создали экземпляр класса ServerSocket, используя указанный порт. Этот экземпляр успешно привязан. Однако при создании другого экземпляра с использованием того же порта возникает исключение BindException , поскольку порт уже привязан к другому сокету. Здесь мы можем просто использовать другой произвольный порт (который не используется) для второго сокета, чтобы избавиться от этого исключения.