Billie
Erfahrenes Mitglied
Helas!
Ich arbeite gerade an einem kleinen Programm, mit welchem man mit einem beliebigen Server auf einem beliebigen Port kommunizieren kann. Also, es wird eine einfache ClientSocket Verbindung aufgebaut (new Socket(host, port)) und der Out- und InputStream besorgt.
Das Problem ist, Daten an den Server zu verschicken ist einfach. Dabei wird auf klick eines Buttons das ActionEvent ausgelöst und der Text aus einer eigenen TextArea an den Server geschickt.
Das Problem ist, wenn der Server antwortet/sendet soll der Text ebenfalls in einer TextArea angezeigt werden. Die Frage ist nun wie Frage ich am Besten ab, ob der Server wieder neue Daten hat? Im Moment habe ich dafür einen eigenen Thread laufen, dieser arbeitet aber nicht korrekt.
Also, kann mir jemand sagen wie ich den InputStream des Servers zur Laufzeit in einer TextArea anzeige?
Hier der Code des derzeitigen Threads:
Ich arbeite gerade an einem kleinen Programm, mit welchem man mit einem beliebigen Server auf einem beliebigen Port kommunizieren kann. Also, es wird eine einfache ClientSocket Verbindung aufgebaut (new Socket(host, port)) und der Out- und InputStream besorgt.
Das Problem ist, Daten an den Server zu verschicken ist einfach. Dabei wird auf klick eines Buttons das ActionEvent ausgelöst und der Text aus einer eigenen TextArea an den Server geschickt.
Das Problem ist, wenn der Server antwortet/sendet soll der Text ebenfalls in einer TextArea angezeigt werden. Die Frage ist nun wie Frage ich am Besten ab, ob der Server wieder neue Daten hat? Im Moment habe ich dafür einen eigenen Thread laufen, dieser arbeitet aber nicht korrekt.
Also, kann mir jemand sagen wie ich den InputStream des Servers zur Laufzeit in einer TextArea anzeige?
Hier der Code des derzeitigen Threads:
Code:
class OutputThread extends Thread {
boolean stop;
InputStream in;
JTextArea textArea;
OutputThread(InputStream in, JTextArea textArea) {
super();
this.in = in;
this.textArea = textArea;
stop = false;
}
public void run() {
int len;
byte[] b = new byte[100];
while(!stop) {
try {
if((len = in.read(b)) == -1)
break;
textArea.append(new String(b, 0, len));
} catch(IOException e) {
}
this.yield();
}
}
public void requestStop(boolean stop) {
this.stop = stop;
}
public boolean getStop() {
return stop;
}
public void setInputStream(InputStream in) {
this.in = in;
}
}