public ChatServer(IServerConsole serverConsole) { chatters = new ArrayList<ChatHandler>(); ChatServer.serverConsole = serverConsole; try { ServerSocket listener = new ServerSocket(4711); print(WELCOME_MESSAGE); while (true) { Socket socket = listener.accept(); print("Connection accepted from " + socket.getInetAddress().getHostAddress()); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter output = new PrintWriter(socket.getOutputStream()); String username = null; String message = input.readLine(); StringTokenizer st = new StringTokenizer(message); // make sure it is a connect message. if (st.nextToken().equals(Requests.Connect) && st.hasMoreTokens()) { // second line must be empty if (input.readLine().equals("")) { username = st.nextToken(); // create new Chatter and ChatHandler Chatter chatter = createChatter(username, socket); ChatHandler chatHandler = new ChatHandler(chatter, this, input); chatters.add(chatHandler); chatHandler.setDaemon(true); chatHandler.start(); print("New Chatter created named: " + chatter.Name + " with id: " + chatter.Id); sendListToAll(); } else { output.print(formatCommand(KNordHeaderFields.Responses.Unsupported)); output.print(formatCommand(KNordHeaderFields.Responses.Disconnect)); print( "Disconnecting from " + socket.getInetAddress().getHostAddress() + " - UNSUPPORTED"); socket.close(); } } } } catch (IOException e) { print(e.getMessage()); try { Thread.sleep(2000); } catch (InterruptedException e1) { e1.printStackTrace(); } serverConsole.getJFrame().dispose(); } }
protected void broadcastMessage(String msg, String source) { StringBuilder response; for (ChatHandler c : chatters) { response = new StringBuilder(); response.append(KNordHeaderFields.Responses.Message + " " + source); response.append("\r\n"); response.append(msg); c.sendResponse(response.toString()); } }
protected void sendMessage(String target, String text, ChatHandler source) { // TODO This shits broken yo. the protocol I mean MESSAGE source boolean noSuchAlias = true; for (int i = 0; i < chatters.size(); i++) { if (chatters.get(i).getChatter().Name.equals(target)) { String message = Responses.Message + " " + source.getChatter().Name + "\n" + text + "\n"; chatters.get(i).sendResponse(message); noSuchAlias = false; } } if (noSuchAlias) source.sendResponse(Responses.NoSuchAlias); }
protected void listChatters(ChatHandler chatHandler) { StringBuilder response = new StringBuilder(); response.append(KNordHeaderFields.Responses.List); response.append("\r\n"); for (ChatHandler ch : chatters) { response.append(ch.getChatter().Name); response.append("\r\n"); } // response.append("\r\n"); chatHandler.sendResponse(response.toString()); }
protected void unknown(ChatHandler chatHandler) { StringBuilder response = new StringBuilder(); response.append(KNordHeaderFields.Responses.Unknown); response.append("\r\n"); chatHandler.sendResponse(response.toString()); }
protected void deleteChatter(ChatHandler chatter) { for (int index = 0; index < chatters.size(); index++) { if (chatters.get(index).equals(chatter)) { chatter.setRunning(false); chatters.remove(chatter); try { chatter.close(); print("Closed connection to " + chatter.getChatter().Name + "."); } catch (IOException e) { e.printStackTrace(); } sendListToAll(); break; } } }
public void stop() { for (Closeable c : closeables) try { c.close(); } catch (IOException ignore) { } ChatHandler.removeAll(); }
public void render() { glPushMatrix(); { glClearColor(0, 0, 0, 0); glColor4f(255, 255, 255, 255); tileMap.render(); player.render(tileMap.getX(), tileMap.getY()); chat.render(); robot.render(); } glPopMatrix(); }
public void update() { chat.update(); player.update(); tileMap.update((1280 / 2) - (int) player.getX(), (720 / 2) - (int) player.getY()); robot.update(); }