package kleinerserver;
import java.net.*;
import java.util.ArrayList;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class KleinerServer{
/**
* Am besten noch ein wenig mit OOP beschaeftigen.
* Die ganzen Variablen muessten nicht static sein
*/
static ServerSocket server;
static Button b1;
static String str;
static PrintWriter p;
// Ich habe dies zu einer Liste geandert damit sich mehrere Client verbinden koennen
static java.util.List<ServerThread> st;
static TextField tf;
KleinerServer(){
}
public static void main (String [] args)
{
Frame f = new Frame();
f.setLayout( new FlowLayout() );
b1 = new Button("GetText");
tf = new TextField();
tf.setPreferredSize(new Dimension(80, 30));
f.add(b1);
f.add(tf);
st = new ArrayList<ServerThread>();
// Hier werden die ClientAnfragen angenommen, muss natürlich in eine eigene Klasse ;)
try {
server = new ServerSocket( 1234);
// Thread zum lauschen auf Verbindungen
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
Socket newClient;
ServerThread newServerThread;
// ACHTUNG momentan noch Endlosschleife, sollte man aendern ;)
while(true){
try {
newClient = server.accept();
newServerThread = new ServerThread(newClient);
newServerThread.start();
st.add(newServerThread);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// Wenn keine Endlosschleife mehr kann und sollte dies hier aufgerufen werden ;)
//server.close();
}
});
thread.start();
} catch (IOException e1) {
e1.printStackTrace();
}
ActionListener al = new ActionListener() {
public void actionPerformed( ActionEvent ae ) {
// Sende Nachricht an alle angemeldeteten Clients
for (ServerThread connection : st) {
if(connection.sendMessage(tf.getText())){
System.out.println("Message send ok");
}else{
System.out.println("Message send failure");
}
}
}
};
b1.addActionListener( al );
f.pack();
f.setVisible(true);
}
}