public class MultiJabberServer extends JApplet {
JTextArea Xout = new JTextArea(20, 50);
int PORT = 8080;
public void init() {
Container cp = getContentPane();
cp.setLayout(new FlowLayout());
cp.add(new JLabel("MultiJabberServer!"));
cp.add(new JScrollPane(Xout));
Xout.append("Welcome to MultiJabberServer \n");
try{
new mainJabber();
}catch(IOException ioe) {}
}
class ServeOneJabber extends Thread {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ServeOneJabber(Socket s)
throws IOException {
socket = s;
in = new BufferedReader( new InputStreamReader(
socket.getInputStream()));
// Enable auto-flush:
out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(
socket.getOutputStream())), true);
start(); // Calls run()
}
public void run() {
try { //try1
while (true) {
String str = in.readLine();
if (str.equals("END")) break;
Xout.append("Echoing: " + str + "\n");
out.println(str);
}
Xout.append("closing...\n");
} catch(IOException e) {
System.err.println("IO Exception");
} finally {
try {
socket.close();
} catch(IOException e) {
System.err.println("Socket not closed");
}
} // try1
}//run
}// class ServeOneJabber
class mainJabber extends Thread {
ServerSocket s ;
Socket socket;
public mainJabber()
throws IOException {
s = new ServerSocket(PORT);
Xout.append("Server Started\n");
start();
}
public void run() {
try {
while(true) {
// Blocks until a connection occurs:
try{
socket = s.accept();
}catch(IOException ioe){}
try {
new ServeOneJabber(socket);
} catch(IOException e) {
// socket.close();
}
}//while
} finally {
// s.close();
}
}
}//class mainJabber
public static void main(String[] args) {
Console.run(new MultiJabberServer(), 600, 400);
}
} ///:~