package net.sf.l2j.controller; import java.io.DataInputStream; import java.io.IOException; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.logging.Logger; import net.sf.l2j.gameserver.Shutdown; import net.sf.l2j.gameserver.clientpackets.Say2; import net.sf.l2j.gameserver.model.L2PcInstance; import net.sf.l2j.gameserver.model.L2World; import net.sf.l2j.gameserver.serverpackets.CreatureSay; public class InteractiveSocket extends Thread { static Logger _log = Logger.getLogger(InteractiveSocket.class.getName()); public static void main(String[] args) throws IOException { } public void close() { _log.info("closing interactive controller"); this.interrupt(); try { server.close(); } catch (IOException e) { } } public void run() { while(true) { _log.info("waiting for connections..."); try { client = server.accept(); is = new DataInputStream(client.getInputStream()); os = new PrintStream(client.getOutputStream()); _log.info("New connection from " + client.getInetAddress().getHostAddress()); while(true) { String cmd = is.readLine(); _log.info("I've got command: <"+cmd+">"); if(cmd.equals("quit")) { client.close(); } else if(cmd.startsWith("announce",0)) { cmd.replace("announce",""); CreatureSay cs = new CreatureSay(0, Say2.ANNOUNCEMENT, "", cmd); for (L2PcInstance player : L2World.getInstance().getAllPlayers()) { player.sendPacket(cs); } } else if(cmd.equals("restart")) { shutdown = new Shutdown(30, true); shutdown.start(); } } } catch (IOException e) { System.out.println(e.getMessage()); } } } public InteractiveSocket(String threadName) { System.out.println("cons #1"); } public InteractiveSocket() throws IOException { super("InteractiveSocket"); System.out.println("cons #2"); try { server = new ServerSocket(2009); } catch (IOException e) { System.out.println(e.getMessage()); } System.out.println("Interactive socket ready on port 2009"); } private ServerSocket server; private Socket client; private DataInputStream is; private PrintStream os; private static Shutdown shutdown = null; }