Übertragung von Strings von einem Client - Programm zu einem Server - Programm(Applet)
Hallo zusammen,
ich habe leider mit den unten aufgeführten Programm folgendes Problem:
Die Datenübertragung funktioniert nur einmalig, d.h. die von mir gesendeten Strings werden vom Applet in der Textarea nur bei der ersten Übertragung dargestellt.
Ich habe ein ähnliches Server - Programm als reine Java Anwendung geschrieben (also kein Applet) und da funkioniert die Übertragung einwandfrei.
Leider kann ich den Fehler nicht finden. Hat da jemand eine Idee?
Alles anzeigen
Vielen Dank ....
Hallo zusammen,
ich habe leider mit den unten aufgeführten Programm folgendes Problem:
Die Datenübertragung funktioniert nur einmalig, d.h. die von mir gesendeten Strings werden vom Applet in der Textarea nur bei der ersten Übertragung dargestellt.
Ich habe ein ähnliches Server - Programm als reine Java Anwendung geschrieben (also kein Applet) und da funkioniert die Übertragung einwandfrei.
Leider kann ich den Fehler nicht finden. Hat da jemand eine Idee?
Quellcode
- Applet:
- import java.applet.*;
- import java.awt.*;
- import java.net.*;
- import java.io.*;
- public class ServerApplet extends Applet implements Runnable
- {
- String news = "";
- TextArea tf = new TextArea(10,20);
- volatile Thread th = null;
- ServerSocket serverSocket;
- Socket server;
- InputStream in;
- InputStreamReader ins;
- BufferedReader br;
- public void init()
- {
- System.out.println("Java-Konsole: init... !");
- setBackground(Color.red);
- setLayout(new FlowLayout());
- add(tf);
- }
- public void start()
- {
- Thread th = new Thread(this);
- th.start();
- }
- public void run()
- {
- System.out.println("im Thread");
- try
- {
- serverSocket = new ServerSocket(4444);
- server = serverSocket.accept();
- in = server.getInputStream();
- ins = new InputStreamReader(in);
- br = new BufferedReader(ins);
- server.setSoTimeout( 60000 ); // max. 1 Minute
- if(server.isBound())
- System.out.println("Bound");
- else
- System.out.println("Not Bound");
- while (true) //th != null
- {
- news=br.readLine().trim();
- tf.setText(news);
- }
- } catch (Exception e)
- {
- System.err.println(e.toString());
- System.exit(1);
- }
- }
- public void paint(Graphics g)
- {
- g.drawString(news, 150, 25);
- }
- public void stop()
- {
- System.out.println("Java-Konsole: stop... !");
- th = null;
- try
- {
- in.close();
- server.close();
- }
- catch (Exception e)
- {
- System.err.println(e.toString());
- System.exit(1);
- }
- }
- }
- Client:
- import java.net.*;
- import java.io.*;
- class SocketSchreiben implements Runnable
- {
- public void run()
- {
- while(true)
- {
- try
- {
- Socket sock = new Socket("127.0.0.1", 4444);
- OutputStream out = sock.getOutputStream();
- OutputStreamWriter outw = new OutputStreamWriter(out);
- BufferedWriter bw = new BufferedWriter(outw);
- sock.setSoTimeout(300);
- BufferedReader conin = new BufferedReader(new InputStreamReader(System.in));
- String line="";
- while(true)
- {
- line = conin.readLine();
- if(line.equalsIgnoreCase("Quit"))
- break;
- bw.write(line);
- bw.flush();
- }
- out.close();
- sock.close();
- } catch(IOException e)
- {
- System.err.println(e.toString());
- System.exit(1);
- }
- }
- }
- }
- public class MainSocketSchreibenThread
- {
- public static void main (String args[])
- {
- Thread client = new Thread(new SocketSchreiben());
- client.start();
- }
- }
Vielen Dank ....
