package info.istlab.ServerTester;
import java.lang.reflect.InvocationTargetException;
public class App {
public static boolean isWindows;
public static String userhome;
public static String userdir;
public static boolean isJAR = false;
public static String ipAddr;
static {
String os = System.getProperty("os.name").toLowerCase();
isWindows = os.contains("windows");
userhome = System.getProperty("user.home");
userdir = System.getProperty("user.dir");
}
public static void main(String[] args) {
Class<?> clazz = App.class; // Mainクラスを指定
String location = clazz.getProtectionDomain().getCodeSource().getLocation().getPath();
isJAR = location.endsWith(".jar");
Host myhost = new Host();
if (args.length > 0) { // 実行時の引数で Web とか Time とか指定された場合、動的にサーバを生成
for (String arg : args) {
System.out.println("実行時の引数で " + arg+" が指定されました。"+arg+"Server を起動します。");
try {
Object serv = Class.forName("info.istlab.ServerTester." + arg+"Server").getConstructor(String.class)
.newInstance("0.0.0.0");
if (serv instanceof SimpleWebSocketServer) {
myhost.addPanel(new ServerPanel4WS((SimpleWebSocketServer) serv, myhost));
} else {
myhost.addPanel(new ServerPanel((Server) serv, myhost));
}
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException
| InvocationTargetException | NoSuchMethodException | SecurityException
| ClassNotFoundException e) {
e.printStackTrace();
}
}
} else {
WebServer web = new WebServer(8081);
myhost.addPanel(new ServerPanel(web, myhost));
WebServer web2 = new WebServer(8081, "0.0.0.0");
myhost.addPanel(new ServerPanel(web2, myhost));
TimeServer time = new TimeServer(10123, "127.0.0.1");
myhost.addPanel(new ServerPanel(time, myhost));
ThreadTimeServer ttime = new ThreadTimeServer(11123);
myhost.addPanel(new ServerPanel(ttime, myhost));
EchoServer echo = new EchoServer(10008, "127.0.0.1");
myhost.addPanel(new ServerPanel(echo, myhost));
ThreadEchoServer techo = new ThreadEchoServer(11008);
myhost.addPanel(new ServerPanel(techo, myhost));
WhiteBoardServer wb = new WhiteBoardServer(11111, "0.0.0.0");
myhost.addPanel(new ServerPanel(wb, myhost));
SimpleWebSocketServer ws = new SimpleWebSocketServer(8887, "0.0.0.0");
myhost.addPanel(new ServerPanel4WS(ws, myhost));
}
// 近隣のホスト情報を集めるUDPサーバ
// myhost.setUdpServer(new UDPServer(54320));
myhost.setMulticastReceiver(new MulticastReceiver(54320));
}
}