1. Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Server Status in Java

Dieses Thema im Forum "Programmierung" wurde erstellt von Calenria, 26. Oktober 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.

  1. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    386
    Minecraft:
    Calenria
    Erstmal der Code:
    Code (Text):
    1.  
    2. public class Status {
    3.  
    4.  
    5.     public static void main(String[] args) throws IOException {
    6.         HashMap<String, String> status = serverStatus("serverip", 25565);
    7.        
    8.         for (String key : status.keySet()) {
    9.             System.out.println(key + ":" + status.get(key));
    10.         }
    11.     }
    12.    
    13.     public static HashMap<String, String> serverStatus(String host, Integer port) throws IOException {
    14.         Socket socket = null;
    15.         DataOutputStream out = null;
    16.         DataInputStream in = null;
    17.  
    18.  
    19.         HashMap<String, String> data = new HashMap<String, String>();
    20.         try {
    21.             socket = new Socket(host, 25565);
    22.             out = new DataOutputStream(socket.getOutputStream());            
    23.             in = new DataInputStream(socket.getInputStream());
    24.         } catch (UnknownHostException e) {
    25.             System.err.println("Don't know about host: " + host);
    26.         } catch (IOException e) {
    27.             System.err.println("Couldn't get I/O for " + "the connection to:" + host);
    28.         }
    29.  
    30.  
    31.         out.write(hexStringToByteArray("FE"));
    32.        
    33.         byte[] b = new byte[241];
    34.         in.read(b, 0, 241);
    35.         StringBuffer buffer = new StringBuffer();
    36.         for (int i = 4; i < b.length; i++) {
    37.             if (b[i] != 0) {
    38.                 buffer.append((char) b[i]);
    39.             }
    40.         }
    41.  
    42.  
    43.         String[] split = buffer.toString().split(String.valueOf((char) -89));
    44.        
    45.         data.put("motd", split[0]);
    46.         data.put("players", split[1]);
    47.         data.put("maxplayers", split[2]);
    48.         out.close();
    49.         in.close();
    50.         socket.close();
    51.        
    52.         return data;
    53.     }
    54.  
    55.  
    56.     public static byte[] hexStringToByteArray(String s) {
    57.         int len = s.length();
    58.         byte[] data = new byte[len / 2];
    59.         for (int i = 0; i < len; i += 2) {
    60.             data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i + 1), 16));
    61.         }
    62.         return data;
    63.     }
    64.  
    65.  
    66. }
    67.  
    Wie ich finde sieht das ganze noch recht hässlich aus mit dem ganzen Hex/Char/Byte zeug, jemand eine Idee für eine elegantere Lösung?
     
  2. Werbung
    Online

    Werbung

  3. Für was soll den das gut sein? Für ein Programm oder wie? :rolleyes:
     
  4. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    386
    Minecraft:
    Calenria
    Ja, eine einfache Server Status Abfrage die eine HashMap mit den Keys motd, players und maxplayers für eine Webseite zurückliefert.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.