Bom estou usando esta API que achei na internet porém tento fazer conexão com 127.0.0.1:25566 não funciona ... tento fazer conexão com um servidor normal que não sejá no meu pc também não funciona, gostaria saber se o problema esta no code ou em que ... e se tiver no code alguém pode me ajudar resolver isso ou me passar uma api funcional
API
import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketException;
import java.nio.charset.Charset;
public class ServerPing {
private static String address;
private static int port;
private static int timeout;
private static boolean online;
private static int playercount;
private static int maxplayers;
private static String motd;
public static void Server(String address, int port, int timeout){
ServerPing.address = address;
ServerPing.port = port;
ServerPing.timeout = timeout;
}
public static String getAddress(){
return ServerPing.address;
}
public static void setAddress(String address){
ServerPing.address = address;
}
public static int getPort(){
return ServerPing.port;
}
public static void setPort(int port){
ServerPing.port = port;
}
public static int getTimeout(){
return ServerPing.timeout;
}
public static void setTimeout(int timeout){
ServerPing.timeout = timeout;
}
public static boolean isOnline(){
return ServerPing.online;
}
private static void setOnline(boolean online){
ServerPing.online = online;
}
public static int getPlayerCount(){
return ServerPing.playercount;
}
private static void setPlayerCount(int playercount){
ServerPing.playercount = playercount;
}
public static int getMaxPlayers(){
return ServerPing.maxplayers;
}
private static void setMaxPlayers(int maxplayers){
ServerPing.maxplayers = maxplayers;
}
public static String getMotd(){
return ServerPing.motd;
}
private static void setMotd(String motd){
ServerPing.motd = motd;
}
public static void ping(){
try{
Socket socket = new Socket();
OutputStream outputStream;
DataOutputStream dataOutputStream;
InputStream inputStream;
InputStreamReader inputStreamReader;
socket.setSoTimeout(ServerPing.timeout);
socket.connect(new InetSocketAddress(ServerPing.getAddress(), ServerPing.getPort()), ServerPing.getTimeout());
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");
ServerPing.setMotd(data[3]);
ServerPing.setPlayerCount(Integer.parseInt(data[4]));
ServerPing.setMaxPlayers(Integer.parseInt(data[5]));
}
else{
String[] data = string.split("§");
ServerPing.setMotd(data[0]);
ServerPing.setPlayerCount(Integer.parseInt(data[1]));
ServerPing.setMaxPlayers(Integer.parseInt(data[2]));
}
dataOutputStream.close();
outputStream.close();
inputStreamReader.close();
inputStream.close();
socket.close();
} catch (SocketException exception) {
ServerPing.setOnline(false);
} catch (IOException exception) {
ServerPing.setOnline(false);
}
}
}
Eu usando
ServerPing sp = new ServerPing();
ServerPing.Server("127.0.0.1", 25566, 7000);
ServerPing.ping();
if(ServerPing.isOnline()){
Bukkit.broadcastMessage("SERVIDOR X ONLINE!");
}
@Edit
Entendi por que não estava ficando on ... porém ainda não consigo pegar o motd ;-;
Pergunta
Solitario
Bom estou usando esta API que achei na internet porém tento fazer conexão com 127.0.0.1:25566 não funciona ... tento fazer conexão com um servidor normal que não sejá no meu pc também não funciona, gostaria saber se o problema esta no code ou em que ... e se tiver no code alguém pode me ajudar resolver isso ou me passar uma api funcional
API
Eu usando
@Edit
Entendi por que não estava ficando on ... porém ainda não consigo pegar o motd ;-;
Editado por SolitarioLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados