0
我有一個程序與插座,一個組播和單播等聊天,但試圖運行時都出現以下錯誤:已在使用的地址: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:地址已在使用中:JVM \ _bind」?錯誤](http://stackoverflow.com/questions/12737293/how-do-i-解決了java-net-bindexception-address-already-in-use-jvm-bind) –
我試過這篇文章的所有解決方案,沒有任何工作。任何仍然無法工作的港口。當我運行這兩個類時,它有一些事情要做。 – Jadsk
由於堆棧跟蹤顯示ChatPrivado_Servidor類中的錯誤,我假設您正在運行這一秒。你確定這個錯誤是同時運行的結果嗎?還是隻是當你運行ChatPrivado_Servidor?我沒有看到你在顯示的代碼中的任何點上調用s.close()或(最重要的)ss.close()。如果服務器套接字沒有關閉,那麼再次運行程序會給你一個「地址已被使用」的錯誤,因爲你從未關閉過最後一臺服務器。確保以某種方式關閉程序結尾處的所有資源。 – Nerdizzle