socket.close aber verbindung besteht noch

Thaflasher

Mitglied
Hi Forum,

ich hab hier ein generelles Verständnisproblem zum Thema Verbindungen, Sockets und die Trennung dieser Verbindungen bzw. Sockets:

Ich habe einen Client:

Java:
public void startConnect() throws IllegalArgumentException, IOException{
		Socket socket = new Socket();
		SocketAddress remoteBindPoint = new InetSocketAddress(serveraddress, port);

		try{
		socket.connect(remoteBindPoint, 5000);
		}
		catch (IOException e){
		}
		sendData(socket.getOutputStream());
		socket.close();
	}
	
	public void sendData(OutputStream out){
		DataOutputStream dos = new DataOutputStream(out);
		for (int i = 0; i < instructions.size(); i++) {
			try {
				dos.writeUTF(instructions.get(i));
			} catch (IOException e) {

			}
		}
		try {
			dos.flush();
			dos.close();
		} catch (IOException e) {
			
		}
		
	}

und einen Server:

Java:
public void receiveData(InetAddress ia, int port, InputStream is) {
		DataInputStream dis = new DataInputStream(is);
		ArrayList<String> receiveList = new ArrayList<String>();
		
		while(true){
			try {
				String holder = dis.readUTF();
				receiveList.add(holder);
			} catch (EOFException e) {
				break;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		receiverQueue.offer(new Worker(ia, port, receiveList));
		try {
			dis.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	@Override
	public void run() {
		try {
			while(true){
			ServerSocket sskt = new ServerSocket(port);
			Socket socket = sskt.accept();
			System.out.println("Connected");
			
			receiveData(socket.getInetAddress(), socket.getPort(),socket.getInputStream());
			
			System.out.println("rdy");
			sskt.close();
			System.out.println("ServerSocket closed? " + sskt.isClosed());
			socket.close();
			System.out.println("socket connected?: " + socket.isConnected());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}	
	}

Was ich versuche ist die beiden Verbindungen zu trennen und den Server quasi für eine neue Verbindung frei zu machen.

Ich dachte wenn ich alle Sockets schließe (.close() ) endet damit auch die Verbindung.

Leider liefert mir socket.isConnected() immer true zurück, obwohl socket.isclosed() mir auch true zurück liefert. Das gleiche hab ich im Client d.h. wenn ich mich kurz darauf neu verbinden möchte bekomme ich eine socketException: Already connected, onwohl ich auch alle Sockets geschlossen habe. ???:L

Hab ich an der ganzen Socket-Geschichte was falsch verstanden?

Danke im voraus!
 
Zuletzt bearbeitet:

Nightmares

Aktives Mitglied
Wenn du den Socket schließt und dieser zu diesem Zeitpunkt verbunden war dann wird diese Wert nicht mehr verändert und bleibt auf true. Ein geschlossener Socket ist auf immer und ewig zu. Er kann nicht mehr geöffnet werden.

Socket (Java Platform SE 7 ) close()


Socket (Java Platform SE 7 ) isConnected()

"isConnected
public boolean isConnected()
Returns the connection state of the socket.
Note: Closing a socket doesn't clear its connection state, which means this method will return true for a closed socket (see isClosed()) if it was successfuly connected prior to being closed.

Returns:
true if the socket was successfuly connected to a server
Since:
1.4"
 
Zuletzt bearbeitet:

Thaflasher

Mitglied
Bedauerlicherweise hast du recht. :-( Es scheint als würde die Verbindung im Hintergrund weiter laufen auch wenn niemand darauf zugreifen kann, da der Socket geschlossen ist.

Habe jetzt
Java:
socket.setReuseAddress(true);
hinzugefügt, da es den Port direkt nach dem close() wieder frei gibt. Jetzt scheint es relativ stabil zu laufen (- relativ da, wenn ich eine paar Minuten nichts mache, ich auf die nächste Serveranfrage eine "no route to host" - exception bekomme °(X.x)° obwohl ich mich 2-3 Minuten vorher noch erfolgreich verbunden hatte. Heute scheint nicht mein Tag zu sein).

Trotzdem Danke für die schnellen Antworten
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards Socket Kommunikation Java Basics - Anfänger-Themen 16
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
G Socket Verbindung aufbauen Java Basics - Anfänger-Themen 11
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
S Asynchrone Socket-Abfragen Java Basics - Anfänger-Themen 5
Meeresgott OOP Socket Verbindung richtig Kapseln Java Basics - Anfänger-Themen 0
O Socket by reference übergeben Java Basics - Anfänger-Themen 0
J Socket schließen - Ist eine SocketException unumgänglich? Java Basics - Anfänger-Themen 4
D Socket ---> Server Socket worauf muss ich achten? Java Basics - Anfänger-Themen 2
N Socket-Programmierung Java Basics - Anfänger-Themen 4
M wait/notify bei Socket Java Basics - Anfänger-Themen 4
B Input/Output Socket I/O - outputStream.write(-1) Java Basics - Anfänger-Themen 2
B Socket OutputStream Java Basics - Anfänger-Themen 17
B Socket Kommunikation in beide Richtungen Java Basics - Anfänger-Themen 12
B Socket, args Java Basics - Anfänger-Themen 22
L Socket in JTextArea Java Basics - Anfänger-Themen 9
T Input/Output Zwei InputStreams von einem Socket Java Basics - Anfänger-Themen 2
B Socket Problem Java Basics - Anfänger-Themen 3
F Buffered Image über Socket versenden Java Basics - Anfänger-Themen 6
E Socket InputStream "terminiert" nicht Java Basics - Anfänger-Themen 4
B Threads Interrupt während Socket.read()? Java Basics - Anfänger-Themen 3
M Versand von Nachrichten via Socket (Delay) Java Basics - Anfänger-Themen 21
F socket-problem Java Basics - Anfänger-Themen 6
E Input/Output Socket bekommt keine Verbindung bei funktionierendem Fremdziel Java Basics - Anfänger-Themen 2
E Socket (Client) dauerhaft aktiv? Java Basics - Anfänger-Themen 9
D Java - Socket - Datenübertragung Java Basics - Anfänger-Themen 18
E Input/Output einfachen Socket für XML-Anfragen bauen Java Basics - Anfänger-Themen 13
R Cannot find a free socket for the debugger Java Basics - Anfänger-Themen 6
F Socket Kommunikation Java Basics - Anfänger-Themen 4
M "Connection reset" gbxRemote Socket Java Basics - Anfänger-Themen 9
N Files mit Byte an Socket versenden Java Basics - Anfänger-Themen 2
L FTP per Socket Java Basics - Anfänger-Themen 2
M Audio Stream läuft auf :connection abort: socket write error Java Basics - Anfänger-Themen 2
J Socket - BufferedReader lese Problem Java Basics - Anfänger-Themen 2
M Socket Server Java Basics - Anfänger-Themen 9
N Socket Problem? Java Basics - Anfänger-Themen 9
G Socket erstellen dauert sehr lange. Java Basics - Anfänger-Themen 4
H Java Socket Java Basics - Anfänger-Themen 14
A XML Daten über Socket Java Basics - Anfänger-Themen 3
I Allgemeine fragen zu Socket server Java Basics - Anfänger-Themen 6
C Socket Programmierung Java Java Basics - Anfänger-Themen 4
F Socket Instanz auf Klasse welche von Socket erbt zuweisen Java Basics - Anfänger-Themen 3
ven000m Wieso antwortet mein Server nicht mehr (Socket Anwendung) Java Basics - Anfänger-Themen 2
J Daten von einem (char*)Socket einlesen. Java Basics - Anfänger-Themen 3
S Java Socket Java Basics - Anfänger-Themen 3
K Frage zu SdtOut streams bzw. Socket Programmierung Java Basics - Anfänger-Themen 3
M HTTP-Anfragen und Socket Java Basics - Anfänger-Themen 2
A von Socket-Stream lesen Java Basics - Anfänger-Themen 4
M Ändern einer Socket-Eigenscheft aus einem modalen Dialog? Java Basics - Anfänger-Themen 6
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
B FileWriter close() muss? Java Basics - Anfänger-Themen 8
S Close Möglichkeiten Java Basics - Anfänger-Themen 3
firefexx Input/Output close() bei mehreren Streams Java Basics - Anfänger-Themen 5
J CLOSE in JOptionPane Java Basics - Anfänger-Themen 7
M Stream close Java Basics - Anfänger-Themen 6
D Mysql Connection Close? Java Basics - Anfänger-Themen 14
H File f close()? Java Basics - Anfänger-Themen 3
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
G Warum bei Stream close() aufrufen. Java Basics - Anfänger-Themen 12
G [Verständnisfrage] flush() und close() Java Basics - Anfänger-Themen 6
N Problem mit BufferedReader und close() Java Basics - Anfänger-Themen 6
S window Close ? FrAge Java Basics - Anfänger-Themen 12
F Frame Close Frage Java Basics - Anfänger-Themen 17
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
H Kapselung protected aber in einer Kindklasse nicht zugänglich Java Basics - Anfänger-Themen 5
L Hilfe! Liste mit Items werden ausgegeben aber nicht in zufälliger Reihenfolge Java Basics - Anfänger-Themen 6
P Installation JRE 8u321 startet, geht aber nicht weiter Java Basics - Anfänger-Themen 1
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
L Mergesort (aber anders) Java Basics - Anfänger-Themen 2
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
U Den Kuchen aufteilen - aber wie? (Rebalancing-Algorithmus) Java Basics - Anfänger-Themen 14
OSchriever Jar-Programm läuft auf Windows aber nicht auf Linux(Raspberri Pi4) Java Basics - Anfänger-Themen 22
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
AGW App programmiert lassen, aber Änderungen vornehmen Java Basics - Anfänger-Themen 13
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
B Java Mail -> Mail senden, ist aber nich in IMAP unter "Gesendet" Java Basics - Anfänger-Themen 3
A Figur erkennen, aber Abweichung falsch Java Basics - Anfänger-Themen 2
A Haben KNNs ein Gedächtnis, lernen etwas oder verändern sich, während sie nicht trainieren, aber aktiv sind? Java Basics - Anfänger-Themen 3
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
S Programmierung simulieren - aber wie?! Java Basics - Anfänger-Themen 3
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
J Mit OpenJDK entwickeln aber Oracle SE Runtime installieren? Java Basics - Anfänger-Themen 6
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
A Java-Programm läuft bei installierter JDK aber nicht mit JRE? Java Basics - Anfänger-Themen 5
C Statischer Typ aber Variable nicht statisch? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben