Hallo Forum-Nutzer,
ich habe folgende Teilcode von meiner Klasse DataSocket:
Wie schon im Kommentar in den Code-Zeilen 16 und 17 geschrieben, wird dort eine BindException geworfen, obwohl doch eigentlich in der close()-Methode alles geschlossen wurde.
Wie kann ich also den (gleichen) Konstruktor bzw. Server mit gleichem Port mehrmals verwenden.
Sprich:
1.: Server mit Server-Konstruktor erzeugen
2.: Server schließen
3.: Später im gleichen Programm wieder Server mit Server-Konstruktor
4.: Server schließen
5.: ...
usw.
Danke im Voraus!
Mit freundlichen Grüßen
Seikuassi
ich habe folgende Teilcode von meiner Klasse DataSocket:
Java:
public DataSocket(int bufferSize,int port,String IP)
throws Exception,IllegalArgumentException,SocketTimeoutException{
this.bufferSize=bufferSize;
this.socket=new Socket();
this.socket.setReceiveBufferSize(this.bufferSize);
this.socket.setSendBufferSize(this.bufferSize);
this.socket.connect(new InetSocketAddress(IP,port));
this.in=new DataInputStream(new BufferedInputStream(this.socket.getInputStream()));
this.out=new DataOutputStream(new BufferedOutputStream(this.socket.getOutputStream()));
}
public DataSocket(int bufferSize,int port,int timeout)
throws Exception,IllegalArgumentException,SocketTimeoutException{
this.bufferSize=bufferSize;
this.server=new ServerSocket();
this.server.setReuseAddress(true); // obwohl ich den Port wiederverwenden darf (?)
this.server.bind(new InetSocketAddress(port)); // hier schmiert das Programm nach 2. Aufruf mit einem "BindException"-Fehler (Adresse wird bereits verwendet) ab
this.server.setReceiveBufferSize(this.bufferSize);
this.server.setSoTimeout(timeout);
this.socket=this.server.accept(); // mit Socket verbinden
this.in=new DataInputStream(new BufferedInputStream(this.socket.getInputStream()));
this.out=new DataOutputStream(new BufferedOutputStream(this.socket.getOutputStream()));
}
// --- Klassen --- //
// --- Methoden --- //
/** Schliesst eine Verbindung. **/
public void close()
throws IOException{
if(server!=null){
this.server.close();
this.server=null;
}
this.socket.shutdownInput();
this.socket.shutdownOutput();
this.socket.close();
this.socket=null;
}
private final int bufferSize;
private Socket socket=null;
private ServerSocket server=null;
Wie kann ich also den (gleichen) Konstruktor bzw. Server mit gleichem Port mehrmals verwenden.
Sprich:
1.: Server mit Server-Konstruktor erzeugen
2.: Server schließen
3.: Später im gleichen Programm wieder Server mit Server-Konstruktor
4.: Server schließen
5.: ...
usw.
Danke im Voraus!
Mit freundlichen Grüßen
Seikuassi