Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. package de.rexlNico.lobby.Api;
  2.  
  3. import java.io.DataOutputStream;
  4. import java.io.InputStream;
  5. import java.io.InputStreamReader;
  6. import java.net.InetSocketAddress;
  7. import java.net.Socket;
  8. import java.nio.charset.Charset;
  9.  
  10. public class Server {
  11. String host;
  12. int port;
  13.  
  14. boolean online;
  15. String motd;
  16. int maxplayers;
  17. int onlineplayers;
  18.  
  19. public Server(String host, int port) {
  20. this.host = host;
  21. this.port = port;
  22. }
  23.  
  24. public Server(int port) {
  25. this.host = "127.0.0.1";
  26. this.port = port;
  27. }
  28.  
  29. //SET
  30.  
  31. public void setOnline(boolean online) {
  32. this.online = online;
  33. }
  34.  
  35. public void setOnlineplayers(int onlineplayers) {
  36. this.onlineplayers = onlineplayers;
  37. }
  38.  
  39. public void setMaxplayers(int maxplayers) {
  40. this.maxplayers = maxplayers;
  41. }
  42.  
  43. public void setMotd(String motd) {
  44. this.motd = motd;
  45. }
  46.  
  47. //GET
  48.  
  49. public String getHost() {
  50. return host;
  51. }
  52.  
  53. public int getPort() {
  54. return port;
  55. }
  56.  
  57. public boolean getOnline() {
  58. return online;
  59. }
  60.  
  61. public int getOnlineplayers() {
  62. return onlineplayers;
  63. }
  64.  
  65. public int getMaxplayers() {
  66. return maxplayers;
  67. }
  68.  
  69. public String getMotd() {
  70. return motd;
  71. }
  72.  
  73. public void ping() {
  74.  
  75. try {
  76. Socket socket = new Socket();
  77.  
  78. socket.setSoTimeout(2500);
  79. socket.connect(new InetSocketAddress(host, port));
  80.  
  81. DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
  82. InputStream is = socket.getInputStream();
  83. InputStreamReader isr = new InputStreamReader(is, Charset.forName("UTF-16BE"));
  84.  
  85. dos.write(new byte[] {(byte)0xFE, (byte)0x01});
  86.  
  87. int packetID = is.read();
  88.  
  89. if(packetID == -1) {
  90. System.out.println("[Signs] Server " + this.toString() + " konnte nicht angepingt werden.");
  91. System.out.println("[Signs] Grund: End of Stream");
  92. dos.close();
  93. is.close();
  94. isr.close();
  95. socket.close();
  96. }
  97. if(packetID != 0xFF) {
  98. System.out.println("[Signs] Server " + this.toString() + " konnte nicht angepingt werden.");
  99. System.out.println("[Signs] Grund: Invalid packetID [" + packetID + "]");
  100. dos.close();
  101. is.close();
  102. isr.close();
  103. socket.close();
  104. }
  105.  
  106. int packetLenght = isr.read();
  107.  
  108. if(packetLenght == -1) {
  109. System.out.println("[Signs] Server " + this.toString() + " konnte nicht angepingt werden.");
  110. System.out.println("[Signs] Grund: End of Stream");
  111. dos.close();
  112. is.close();
  113. isr.close();
  114. socket.close();
  115. }
  116. if(packetLenght == 0) {
  117. System.out.println("[Signs] Server " + this.toString() + " konnte nicht angepingt werden.");
  118. System.out.println("[Signs] Grund: Invalid lenght");
  119. dos.close();
  120. is.close();
  121. isr.close();
  122. socket.close();
  123. }
  124.  
  125. char[] chars = new char[packetLenght];
  126.  
  127. if(isr.read(chars, 0, packetLenght) != packetLenght) {
  128. System.out.println("[Signs] Server " + this.toString() + " konnte nicht angepingt werden.");
  129. System.out.println("[Signs] Grund: End of Stream");
  130. dos.close();
  131. is.close();
  132. isr.close();
  133. socket.close();
  134. }
  135.  
  136. String str = new String(chars);
  137. String[] info = str.split("\0");
  138.  
  139. try {
  140. setMotd(info[3]);
  141. setOnline(getMotd() != null);
  142. setOnlineplayers(Integer.parseInt(info[4]));
  143. setMaxplayers(Integer.parseInt(info[5]));
  144. dos.close();
  145. is.close();
  146. isr.close();
  147. socket.close();
  148. } catch(Exception ex) {
  149. setOnline(false);
  150. setMaxplayers(0);
  151. setOnlineplayers(0);
  152. setMotd(null);
  153. dos.close();
  154. is.close();
  155. isr.close();
  156. socket.close();
  157. }
  158.  
  159. dos.close();
  160. is.close();
  161. isr.close();
  162. socket.close();
  163.  
  164. } catch (Exception e) {
  165. setOnline(false);
  166. setMaxplayers(0);
  167. setOnlineplayers(0);
  168. setMotd(null);
  169. }
  170.  
  171. }
  172.  
  173. public String toString() {
  174. return host + ":" + port;
  175. }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement