readline-thread stoppt vorzeitig

Status
Nicht offen für weitere Antworten.

schoppenhauer_entfernt_

Bekanntes Mitglied
Hallo. Ich versuche grad einen IRC-Bot zu schreiben... bin aber momentan noch in der "Experimentierphase"... und... tja... ich habe ein Problem. Der folgende Code
Code:
	public void run () {
	    String buffer;
	    try {
	    ircin = new BufferedReader (
		new InputStreamReader (s.getInputStream()));
	    do {
	     if ((buffer = ircin.readLine())!=null) {

		//Ping-Pong
		if (buffer.substring(0, 5).equals("PING ")) {
		    ircout.println("PONG " +
				   buffer.substring(6, buffer.length()-6));
		    System.out.println("PINGPONG - \"" + buffer + "\"");
		} else {
		    System.out.println("Message>"+buffer);
		    }}
	     System.out.print("*"); //<-----Kontrolle
	    } while(true);
	    } catch (Exception e) {
		System.out.println("Fehler in run(); !");
	    }
	}
den ich vorher mit
Code:
Thread t = new Thread(this);
	t.start();
starte (die klasse implementiert Runnable) sollte eigentlich in einem Endless-Loop immer wieder die Messages vom Server ausgeben.
Um zu überprüfen ob der loop auch funktioniert habe ich das
Code:
System.out.print("*"); //<-----Kontrolle
eingefügt...
Nunja... es geht nicht immer... Also der Loop geht seltsamerweise nur teilweise - wann genau kann ich nicht sagen... ich sehe da keinen Zusammenhang.
Jedenfalls... Mir gibt das Ding auch absolut NICHTS aus. Abhängig vom Server gibt es mir mal die erste Zeile aus, die der Server sendet, mal garnichts. Ein Fehler ist nie da - der server scheint connected zu bleiben.

Ich möchte eigentlich nur dass mir alles was der Server sendet ausgegeben wird. Und ich hab leider keine Ahnung was ich falschmache.
Kann mir jemand helfen?
 

The_S

Top Contributor
1. "s" ist dein Socket!?
2. Wenn der Server nichts mehr sendet gibt der InputStream auch nicht -1 zurück sondern erst wenn der Socket bzw. Stream geschlossen wird. Kann es also evtl. sein dass der Fehler auf der Serverseite liegt?

[edit]

3. der Thread stoppt vorzeitig oder es wird einfach nichts mehr ausgegeben?
 

schoppenhauer_entfernt_

Bekanntes Mitglied
Sorry. Ja, s ist mein Socket.
Hm. Woran kann ich denn erkennen wenn der Server meine connection beendet?

Dass es ein Serverseitiges Problem ist, glaub ich mal nicht... ich habe mehrere richtige Server ausprobiert, dann bitlbee, etc. Hat bei allen nicht wirklich funktioniert. Daraus schließe ich mal, dass der Fehler bei mir liegt. Aber: Ich führe diesen Thread aus, bevor ich an den Server direkt sende - um eben alle Fehlermeldungen zu sehen, die er mir ausgibt. Ich sehe MANCHMAL den Anfang der MOTD... Mehr nicht.

Also ob er stoppt weiß ich nicht. Die Sternchen (die ich ja nur zur kontrolle habe) werden nicht ausgegeben. Die Sternchen sollten eigentlich unabhängig vom Rest IMMER ausgegeben werden. Warum dem nicht so ist, weiß ich nicht. Ich schließe mal daraus, dass der Thread gestoppt wird oder irgendwas ihn blockiert.
 

schoppenhauer_entfernt_

Bekanntes Mitglied
Ok... Danke.
Ich habe inzwischen durch zufall selber rausgefunden, dass man anscheinend den Output-Stream flushen muss... Wusst ich nicht. Im Moment funktionierts.
Die Frage, die sich mir aber immernoch stellt ist: Wie erkennt man dass der Server nichts mehr sendet?
Also ich erkenne es momentan daran, dass einfach der thread nur noch sternchen ausgibt... aber wie kann ich das mit dem programm feststellen?
 

The_S

Top Contributor
imho gar nicht. Du bekommst nur mit wenn die Connection geclosed wird. Joa, OutputStream muss geflushed werden wenn er gebuffert ist. Das ist aber überall so, nicht nur bei Sockets.

Was mich noch verwundert, dass du Sternechen ausgegeben bekommst. Weil normalerweiße müsste sich der BufferedReader so lange blockieren bis wieder was gesendet wird => Du dürftest nur Sterne ausgegeben bekommen wenn der Server auch vorher was gesendet hat :shock:
 

The_S

Top Contributor
Du kannst überprüfen ob der Socket geschlossen ist mit socket#isClosed(); und ansonsten wenn deine readLine() Methode eine Exception wirft :bae: .
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Socket [Anfänger] BufferedReader.readLine() lässt sich Zeit Netzwerkprogrammierung 1
B Socket BufferedReader.readLine() beenden ohne den Stream zu closen Netzwerkprogrammierung 7
D Komischer Fehler Readline() Netzwerkprogrammierung 7
A Socket BufferedReader.readLine() blockiert bis ein im Socket OutputStream was gesendet wird ... Netzwerkprogrammierung 9
T Bezeichner "end of line" für die Funktion readline Netzwerkprogrammierung 5
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
0din SMTP Client - readline problem Netzwerkprogrammierung 4
B Multi-Threaded block bei BufferedReader.readLine() Netzwerkprogrammierung 8
G .readLine() blockt? Netzwerkprogrammierung 3
B Socket - Scanner - readLine(); Netzwerkprogrammierung 2
M Socket und readLine() Netzwerkprogrammierung 4
J readline blockiert? Netzwerkprogrammierung 9
P Problem mit readLine ---- und mit dem connecten Netzwerkprogrammierung 10
E Sockets, readLine() Netzwerkprogrammierung 7
O BufferedReader.readline kommt nicht zurück Netzwerkprogrammierung 7
B BufferedReader.readLine() ließt nicht vollständig ! ? Netzwerkprogrammierung 5
OnDemand Thread und Ratelimiter Netzwerkprogrammierung 4
F Thread "extern" beenden Netzwerkprogrammierung 3
OnDemand Linux RAM per Thread Netzwerkprogrammierung 3
V Socket Audio Clip loopen ohne neuen Thread Netzwerkprogrammierung 2
C Thread Netzwerkprogrammierung 9
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
S Socket ThreadPool oder Thread pro Client? Netzwerkprogrammierung 11
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
M Thread Scheduler Java 5.0? Netzwerkprogrammierung 2
7 Mehrere Verbindungen gleichzeitig in einem Thread mit ApacheHTTP Netzwerkprogrammierung 7
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
B Socket Thread handling / Reader init Netzwerkprogrammierung 8
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Thread Pooling Netzwerkprogrammierung 6
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
B callback thread udp Netzwerkprogrammierung 2
D RMI und Thread Netzwerkprogrammierung 4
S Kommunikationsproblem, Thread und manuel Netzwerkprogrammierung 4
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
K ein Thread pro Stream Netzwerkprogrammierung 2
D Weiterer Thread auf Port 843 horcht Netzwerkprogrammierung 7
D Thread problem Netzwerkprogrammierung 3
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Thread Transport Netzwerkprogrammierung 6
S Socket Thread in Schleife Netzwerkprogrammierung 4
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T synchronized mit thread und rückgabe Netzwerkprogrammierung 4
Q Thread und Sockets... Netzwerkprogrammierung 2
2 Class mit ServerSocket erbt von Thread? Netzwerkprogrammierung 3
PAX Outputstream von anderem Thread verwenden lassen Netzwerkprogrammierung 5
C Server mit Multithreading (Thread-Pool) Netzwerkprogrammierung 2
E java.lang.NullPointerException aber nur wenns im Thread läuf Netzwerkprogrammierung 4
F EIN Thread in RMI auf Serverseite Netzwerkprogrammierung 3
G Server Thread beenden Netzwerkprogrammierung 16
T Socket-Thread: Designfrage Netzwerkprogrammierung 14
S Mit Thread arbeitende Maschine Netzwerkprogrammierung 6
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
ven000m Thread Frage Netzwerkprogrammierung 11
B Thread.start() (run()) excption Netzwerkprogrammierung 2
M Thread läuft nicht weiter Netzwerkprogrammierung 2
B NullPointerException | Thread Netzwerkprogrammierung 4
U Current thread not owner Netzwerkprogrammierung 3
J RMI - (RemoteException occurred in server thread) Netzwerkprogrammierung 2
S Webserverprogrammierung: Thread-Beschränkung Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
F problem mit thread bzw. netzwerkverbindung! Netzwerkprogrammierung 3
L netzwerk mit thread Netzwerkprogrammierung 3
G RMI thread safe ? Netzwerkprogrammierung 11
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3
A Chatserver/-client - Code stoppt bei readUTF() Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben