У меня есть программа для общения с сокетами, один многоадресными и одноадресными другими, но при попытке запустить как я получаю следующее сообщение об ошибке:Адрес уже используется: JVM_Bind. Розетки Чата
java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:96)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:175)
at java.net.ServerSocket.bind(ServerSocket.java:376)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:128)
at Chat.ChatPrivado_Servidor$Hilo.run(ChatPrivado_Servidor.java:47)
Видимо ошибка находится в классе ChatPrivado_Servidor с резьбой, Я поставил их код, чтобы помочь мне, пожалуйста. Извините плохой английский
Класс ChatPrivado_Servidor
class Hilo extends Thread {
String msgin = "";
public void run() {
try{
ss = new ServerSocket(1500);
s = ss.accept();
din = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
while(!msgin.equals("exit")){
msgin = din.readUTF();
textarea.setText(textarea.getText().trim()+"\n "+msgin);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
класса ChatMulticast
private void send(String mensaje) throws IOException {
String mensaje2 = nombre + ": " + mensaje;
byte[] buffer_e = mensaje2.getBytes();
DatagramPacket paquete_enviado = new DatagramPacket(buffer_e, 0, buffer_e.length, direccion, 4321);
socket.send(paquete_enviado);
}
class Reader extends Thread {
public void run() {
byte[] buffer_r = new byte[512];
DatagramPacket paquete_recibido = null;
while (true) {
try {
paquete_recibido = new DatagramPacket(buffer_r, buffer_r.length);
socket.receive(paquete_recibido);
} catch (IOException e) {
e.printStackTrace();
}
String linea = new String(paquete_recibido.getData(), 0, paquete_recibido.getLength());
}
}
}
ChatMulticast(String n) {
nombre = n;
try {
direccion = InetAddress.getByName("228.5.6.7");
socket = new MulticastSocket(4321);
socket.joinGroup(direccion);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
Я поставил слишком порты и не принимает меня ни
Возможный дубликат [Как устранить ошибку «java.net.BindException: Address уже используется: JVM \ _Bind»?] (Http://stackoverflow.com/questions/12737293/how-do-i- resolve-the-java-net-bindexception-address-already-in-use-jvm-bind) –
Я пробовал все решения этого сообщения, и ничего не работает. любой порт, который все еще не работает. Это что-то делать, когда я запускаю эти два класса. – Jadsk
Поскольку трассировка стека показывает ошибку в классе ChatPrivado_Servidor, я предполагаю, что вы запускаете эту секунду. Вы уверены, что ошибка является результатом одновременного запуска обоих? Или это просто, когда вы запускаете ChatPrivado_Servidor? Я не вижу, чтобы вы вызывали s.close() или (самое главное) ss.close() в любой точке показанного кода. Если серверный сокет не закрыт, то запуск программы снова даст вам ошибку «адрес уже используется», поскольку вы никогда не закрывали последний сервер. Не забудьте закрыть все ресурсы в конце вашей программы тем или иным способом. – Nerdizzle