Hi,
also ich habe drei klassen zum Chat geschrieben,
so nun
will ich das chatapplet aufrufen, und zwar von der Klasse "Chat"
aber wie kann ich das anstellen?
Ich weiß, um die klasse chatapplet aufzurufen, muss ich schon einmal
die Klasse chatserver starten, aber egal wie ich das anstelle, es klappt, nicht, kann mir einer helfen?
So, nun ich rufe die Klasse chatapplet mit den folgenden Zeilen in meiner Main auf:
es klappt aber nicht, es passiert nichts, das Applet erscheint nicht, wieso?
Um "chatapplet.java" starten zu können, muss man vorher schon einmal die klasse "chatserver.java" gestartet haben, was mache ich falsch?
also ich habe drei klassen zum Chat geschrieben,
so nun
will ich das chatapplet aufrufen, und zwar von der Klasse "Chat"
aber wie kann ich das anstellen?
Ich weiß, um die klasse chatapplet aufzurufen, muss ich schon einmal
die Klasse chatserver starten, aber egal wie ich das anstelle, es klappt, nicht, kann mir einer helfen?
Code:
import java.net.*;
import java.io.*;
class connection extends Thread
{
protected Socket client;
protected DataInputStream in;
protected PrintStream out;
protected chatserver server;
public connection(chatserver server, Socket client)
{
this.server=server;
this.client=client;
try
{
in = new DataInputStream(client.getInputStream());
out = new PrintStream(client.getOutputStream());
} catch (IOException e)
{
try { client.close(); } catch (IOException e2) {} ;
System.err.println("Fehler beim Erzeugen der Streams: " + e);
return;
}
this.start();
}
public void run()
{
String line;
try
{
while(true)
{
line=in.readLine();
if(line!=null)
server.broadcast(line);
}
} catch (IOException e)
{
System.out.println("Fehler:" + e);
}
}
}
Code:
import java.net.*;
import java.io.*;
import java.util.*;
public class chatserver implements Runnable
{
public static final int PORT = 2;
protected ServerSocket listen;
protected Vector connections;
Thread connect;
public chatserver()
{
try
{
listen = new ServerSocket(PORT);
} catch (IOException e)
{
System.err.println("Fehler beim Erzeugen der Sockets:"+e);
System.exit(1);
}
connections = new Vector();
connect = new Thread(this);
connect.start();
}
public void run()
{
try
{
while(true)
{
Socket client=listen.accept();
connection c = new connection(this, client);
connections.addElement(c);
}
} catch (IOException e)
{
System.err.println("Fehler beim Warten auf Verbindungen:"+e);
System.exit(1);
}
}
public static void main(String[] args)
{
new chatserver();
}
public void broadcast(String msg)
{
int i;
connection you;
for (i=0; i<connections.size(); i++)
{
you = (connection) connections.elementAt(i);
you.out.println(msg);
}
}
}
Code:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.TextField;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
public class chatapplet extends Applet implements Runnable
{
public static final int PORT = 2;
Socket socket;
DataInputStream in;
PrintStream out;
TextField inputfield;
TextArea outputarea;
Thread thread;
public void init()
{
inputfield = new TextField();
outputarea = new TextArea();
outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
outputarea.setEditable(false);
this.setLayout(new BorderLayout());
this.add("South", inputfield);
this.add("Center", outputarea);
this.setBackground(Color.lightGray);
this.setForeground(Color.black);
inputfield.setBackground(Color.white);
outputarea.setBackground(Color.white);
}
public void start()
{
try
{
socket = new Socket(this.getCodeBase().getHost(), PORT);
in = new DataInputStream(socket.getInputStream());
out = new PrintStream(socket.getOutputStream());
} catch (IOException e)
{
this.showStatus(e.toString());
say("Verbindung zum Server fehlgeschlagen!");
System.exit(1);
}
say("Verbindung zum Server aufgenommen...");
if (thread == null)
{
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
}
public void stop()
{
try
{
socket.close();
} catch (IOException e)
{
this.showStatus(e.toString());
}
if ((thread !=null) && thread.isAlive())
{
thread.stop();
thread = null;
}
}
public void run()
{
String line;
try
{
while(true)
{
line = in.readLine();
if(line!=null)
outputarea.appendText(line+'\n' );
}
} catch (IOException e) { say("Verbindung zum Server abgebrochen"); }
}
public boolean action(Event e, Object what)
{
if (e.target==inputfield)
{
String inp=(String)"Imperator: "+ e.arg;
out.println(inp);
inputfield.setText("");
return true;
}
return false;
}
public void say(String msg)
{
outputarea.appendText("*** "+msg+" ***\n");
}
public static void main()
{
new chatapplet();
}
}
Code:
public class Chat
{
public static void main(String[]args)
{
new chatserver();
new chatapplet();
}
}
Um "chatapplet.java" starten zu können, muss man vorher schon einmal die klasse "chatserver.java" gestartet haben, was mache ich falsch?