ich bin dabei ein "JoinSigns"-Plugin für BungeeCord zu Programmieren, welches in einer Config eingestellte Server anpingt und unter anderem das MOTD ausliest.
Auf den einzelnen Servern wird das MOTD mit dem ServerListPingEvent geändert.
Vorweg: Google hat mir gesagt, das der Fehler an meiner Ping-Klasse liege.
Hier die Ping-Klasse:
Code:
public class Ping
{
public static String motd;
public static int playercount;
public static int maxplayers;
public static boolean online;
public static void ping(String address, int port)
{
try
{
InetSocketAddress isa = new InetSocketAddress(address, port);
Socket socket = new Socket();
OutputStream outputStream;
DataOutputStream dataOutputStream;
InputStream inputStream;
InputStreamReader inputStreamReader;
socket.setSoTimeout(4000);
socket.connect(isa, 4000);
outputStream = socket.getOutputStream();
dataOutputStream = new DataOutputStream(outputStream);
inputStream = socket.getInputStream();
inputStreamReader = new InputStreamReader(inputStream,Charset.forName("UTF-16BE"));
dataOutputStream.write(new byte[]{(byte) 0xFE,(byte) 0x01});
int packetId = inputStream.read();
if(packetId == -1)
{
dataOutputStream.close();
outputStream.close();
inputStreamReader.close();
inputStream.close();
socket.close();
throw new IOException("Premature end of stream.");
}
if(packetId != 0xFF)
{
dataOutputStream.close();
outputStream.close();
inputStreamReader.close();
inputStream.close();
socket.close();
throw new IOException("Invalid packet ID (" + packetId + ").");
}
int length = inputStreamReader.read();
if(length == -1)
{
dataOutputStream.close();
outputStream.close();
inputStreamReader.close();
inputStream.close();
socket.close();
throw new IOException("Premature end of stream.");
}
if(length == 0)
{
dataOutputStream.close();
outputStream.close();
inputStreamReader.close();
inputStream.close();
socket.close();
throw new IOException("Invalid string length.");
}
char[] chars = new char[length];
if(inputStreamReader.read(chars,0,length) != length)
{
dataOutputStream.close();
outputStream.close();
inputStreamReader.close();
inputStream.close();
socket.close();
throw new IOException("Premature end of stream.");
}
String string = new String(chars);
if(string.startsWith("§"))
{
String[] data = string.split("\0");
motd = data[3];
playercount = Integer.parseInt(data[4]);
maxplayers = Integer.parseInt(data[5]);
}
else{
String[] data = string.split("§");
motd = data[0];
playercount = Integer.parseInt(data[1]);
maxplayers = Integer.parseInt(data[2]);
}
online = true;
dataOutputStream.close();
outputStream.close();
inputStreamReader.close();
inputStream.close();
socket.close();
}
catch (SocketException exception)
{
online = false;
}
catch (IOException exception)
{
online = false;
}
}
}
Reden wir hier von Minecraft 1.6 und älter oder von 1.7 und neuer? Dann deine Klasse ist für 1.6 und älter, bei 1.7 wurde das komplett verändert und viele Server reagieren nicht mehr auf den alten Ping.
Ahh ok ich hab jetzt einen Entsprechenden Ping mit Handshakes. Dieser gibt sämtliche informationen jedoch zwischen zwei "" aus. Diese kann ich aber ja nicht mit
String.replace(""", "");
ersetzten, da er den String dann ja nicht als solchen erkennt...
Auch bei google habe ich nichts entsprechendes gefunden...
Weis jemand wie man das Regelt?
Vielen Dank im Vorraus?
Mit freundlichen Grüßen
LuisKillergurke
//Edit:
Bin auch doof, das erste geht ja mit String.substring(1);
Aber am ende weis ich nicht wie ich das hinbekomme :/
[How²] Anpingen des Servers verbieten 02/06/2014 - Metin2 PServer Guides & Strategies - 4 Replies Folgender Code schaltet den Ping immer ab:
# Echos auf Pings abschalten
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Auf Anfragen an den Broadcast auch nicht antworten.
# (z.B.: smurf attacke)
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
Server MOTD mit PHP-Script 05/09/2013 - Minecraft - 3 Replies Hallo liebe Community,
heute ist mir mal wieder eine Idee aufgekommen:
Wenn mein Server (temporär) offline ist, könnte man ja solange die (Sub-)Domain auf einen einfachen Webspace mit PHP weiterleiten, welcher aber eigentlich nur die Funktion erfüllt, dass er eine MOTD anzeigt.
Wie z.B.:
"§4Server temporär offline.§r"
Ist sowas möglich?
Kleine Frage zum anpingen 10/16/2012 - AutoIt - 5 Replies Hi ich habe mit nem Kumpel ne Lan Verbindung aufbauen wollen und dazu ist es ja üblich, sich anzupingen um zu schauen, ob eine Verbindung besteht. Mein Ziel war es nun ein kleines Programm zu schreiben, in dem man die gewünschte IP in eine Inputbox eingetragen wird. Anschließend soll diese IP im im cmd Fenster erscheinen und davor sollte natürlich "ping " stehen. Dann soll ein Enter befehl gesendet werden. Ich hoffe es war verständlich, was ich will. ^^
Das ist auch alles ganz schick. Aber er...
[Statusanzeiger] für Server [Slots,Online,MOTD] 02/07/2012 - Minecraft Mods, Textures, Skins & Maps - 6 Replies Ich zeige habe vor in der nächsten Zeit PHP zu machen und dabei mache ich eine Statusanzeige die Anzeigen soll wieviele Slots der Server hat, wieviele drauf sind, ob der überhaupt Online ist, und die MOTD .
Zurzeit habe ich ne einfache Anzeige gemacht, die Aktuell nur das Anzeigt:
- IP
- OnlineStatus
- MaxSlotZahl
- Wieviele sind drauf
Wie benutze ich das?
Ganz einfach