Ir para conteúdo
  • 0

[DEV] Alguém pode me ajudar (Conexões locais e externas)


Solitario

Pergunta

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 ;-;

Editado por Solitario
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

Obs: foi resolvido só tinha uma coisa errada mesmo ... setOnline(true) estava faltando ... 

SetOnline ??

Onde metes isso ?

E como resolveu o problema ?

Editado por cjmt2pt
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...