- Back to Home »
- BindException
Postado Por:
Alma Esqueda
lunes, 7 de diciembre de 2015
Las
señales que se produjo un error al intentar enlazar un socket a una dirección y
el puerto local. Por lo general, el puerto está en uso, o la dirección local solicitada
no puede ser asignada.
Esta
excepción se lanza para indicar que se produjo un error cuando una aplicación
intenta enlazar un socket a una dirección y el puerto local. La principal
causa de esta excepción es que, o bien el puerto ya está en uso, o la dirección
solicitada no se puede asignar a la aplicación de llamada.
El BindException clase amplía
la SocketException clase, que se lanza para indicar un error al crear
o acceder a un socket.Además, el SocketException clase extiende
la IOException clase, que se utiliza para indicar que se ha producido
una excepción de E/S.
La
estructura de las BindException
Constructores
*BindException
()
Crea una
instancia de la BindException clase,
estableciendo nula como su mensaje.
*BindException
(String s)
Crea una
instancia de la BindException clase, utilizando la cadena
especificada como mensaje. El argumento de cadena indica el nombre de la
clase que arrojó el error.
El BindException en Java
Como ya
explicamos, el BindException se produce cuando la aplicación Java
intenta enlazar un socket a una dirección y el puerto local, pero que están
siendo utilizados por otra aplicación. Eche un vistazo al siguiente
ejemplo:
BindExceptionExample.java:
01
|
importación java.io.IOException;
|
02
|
importación java.net.ServerSocket;
|
03
|
|
04
|
pública clase BindExceptionExample {
|
05
|
|
06
|
privada última estática int PORT
= 15000;
|
07
|
|
08
|
públicas estáticas void main
(String [] args) lanza IOException {
|
09
|
ServerSocket _socket = nueva ServerSocket (PORT);
|
10
|
|
11
|
// La siguiente declaración lanza una BindException.
|
12
|
ServerSocket _socket_ = nueva ServerSocket (PORT);
|
13
|
|
14
|
_socket.close ();
|
15
|
_socket_.close ();
|
16
|
}
|
17
|
}
|
En este
ejemplo queremos crear dos instancias del ServerSocket clase. La
primera instancia se crea correctamente y se une el puerto
especificado. Cuando el segundo ejemplo está a punto de ser creado, usando
el mismo puerto, entonces, un BindException se lanza.
Una
muestra de la ejecución se muestra a continuación:
1
|
Excepción en
el hilo "principal" java.net.BindException:
Dirección ya en uso
|
2
|
en
java.net.PlainSocketImpl.socketBind (Método Nativo)
|
3
|
en java.net.AbstractPlainSocketImpl.bind
(AbstractPlainSocketImpl.java:382)
|
4
|
en java.net.ServerSocket.bind (ServerSocket.java:375)
|
5
|
en
java.net.ServerSocket. (ServerSocket.java:237)
|
6
|
en
java.net.ServerSocket. (ServerSocket.java:128)
|
7
|
en main.java.BindExceptionExample.main (BindExceptionExample.java:14)
|
La forma
más sencilla de evitar esta excepción es usar otro puerto y verificar
que el puerto no está en uso por otra aplicación.