Socket ServerSocket mehrmals erzeugen

Seikuassi

Aktives Mitglied
Hallo Forum-Nutzer,

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 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
 

Seikuassi

Aktives Mitglied
Hallo,

okay, mal wieder ganz einfach. Einfach den ServerSocket-Konstruktor (2. v. o.) ersetzen mit:
Java:
public DataSocket(int bufferSize,int port,int timeout)
throws Exception,IllegalArgumentException,SocketTimeoutException{
	this.bufferSize=bufferSize;
	this.server=new ServerSocket();
	this.server.setReuseAddress(true);
	this.server.bind(new InetSocketAddress(port));
	this.server.setReceiveBufferSize(this.bufferSize);
	this.server.setSoTimeout(timeout);
	try{
		this.socket=this.server.accept(); // mit Socket verbinden
	}catch(SocketTimeoutException exc){ // ServerSocket muss noch geschlossen werden
		this.server.close();
		throw exc;
	}
	this.in=new DataInputStream(new BufferedInputStream(this.socket.getInputStream()));
	this.out=new DataOutputStream(new BufferedOutputStream(this.socket.getOutputStream()));
}
Wenn also eine SocketTimeoutException von accept() geworfen wird, muss der ServerSocket natürlich geschlossen werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Custom E Mail Adresse mithilfe Serversocket oder ähnliches Netzwerkprogrammierung 21
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D ServerSocket - Socket Verbindungsart Netzwerkprogrammierung 3
J 1 Socket - 2 Serversocket Netzwerkprogrammierung 4
J Client - Serversocket Netzwerkprogrammierung 1
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
J ServerSocket sauber beenden Netzwerkprogrammierung 3
H ServerSocket.accept() unterbrechen Netzwerkprogrammierung 3
TheJavaKid ServerSocket beendet mit PuTTy Netzwerkprogrammierung 9
T ServerSocket.accept Rückgabetyp casten Netzwerkprogrammierung 3
P Socket Daten senden mit ServerSocket? Netzwerkprogrammierung 2
4 Socket Kann kein ServerSocket erstellen Netzwerkprogrammierung 4
D Socket ServerSocket Push Netzwerkprogrammierung 5
G ServerSocket.accept() überschreibt IP-Adresse Netzwerkprogrammierung 4
C serversocket.accept() klappt nicht Netzwerkprogrammierung 10
Tobse HTTP ServerSocket HTTP Netzwerkprogrammierung 4
X FAQ Frage - Netzwerkgrundlagen - ServerSocket und Socket Netzwerkprogrammierung 4
M Wahrnehmen, dass ServerSocket geschlossen wurde Netzwerkprogrammierung 14
T ServerSocket bleibt beim lesen von Input hängen Netzwerkprogrammierung 2
M ServerSocket.accept() abbrechen Netzwerkprogrammierung 8
Schandro Herausfinden ob hinter einem Port bereits ein ServerSocket steckt Netzwerkprogrammierung 2
2 Class mit ServerSocket erbt von Thread? Netzwerkprogrammierung 3
T Java Socket und ServerSocket über Internet-IP? Netzwerkprogrammierung 9
dayaftereh serverSocket.accept(); Wecken Netzwerkprogrammierung 2
G Frage zu Serversocket-Beispiel aus der FAQ Netzwerkprogrammierung 17
D Komisches Fenster bei Serversocket Netzwerkprogrammierung 2
M Kommunikation zwischen ServerSocket und Socket Netzwerkprogrammierung 2
F ServerSocket im internet zugänglich machen Netzwerkprogrammierung 15
H ServerSocket -> Zugriff nur von localhost Netzwerkprogrammierung 6
P Serversocket schmeißt immmer EOFEXCEPTION Netzwerkprogrammierung 2
A serversocket soll anfrage vom handy entgegennehmen Netzwerkprogrammierung 4
P Problem mit Socket und ServerSocket Netzwerkprogrammierung 2
S ServerSocket merkt nicht, wenn keiner mehr da ist Netzwerkprogrammierung 8
J ServerSocket vs. DatagramSocket Netzwerkprogrammierung 2
A ServerSocket prinzipielle Frage Netzwerkprogrammierung 5
D Problem ServerSocket global Netzwerkprogrammierung 3
J ServerSocket schließen / öffnen im Programmverlauf Netzwerkprogrammierung 4
G einfache Frage zu ServerSocket ... Netzwerkprogrammierung 5
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3
A Datei erzeugen und auf der Weboberfläche downloaden (Tomcat) Netzwerkprogrammierung 4
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
M bild von einer url erzeugen Netzwerkprogrammierung 7
F Link erzeugen und versenden Netzwerkprogrammierung 4
G Fehlermeldung beim Erzeugen der WSDL Datei unter Axis Netzwerkprogrammierung 2
U Image erzeugen aus empfangenen Daten Netzwerkprogrammierung 7
O konstanten Datenstrom erzeugen Netzwerkprogrammierung 7

Ähnliche Java Themen


Oben