RCON Подключается, но не отправляет команду

_MRDen3000YT_

Пользователь
Сообщения
473
Решения
22
Вот код, которым я отправляю RCON

Java:
package test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import static java.nio.ByteOrder.LITTLE_ENDIAN;

public class main {


    static final int EXECUTE_COMMAND_PACKET = 2;
    static final int AUTHORIZATION_PACKET = 3;
    static final int AUTHORIZATION_RESPONSE = 2;
    static final SocketAddress serverAddress = new InetSocketAddress("0.0.0.0", 25575);
    static final String rconPassword = "ssja";
    static InputStream inputStream;
    static OutputStream outputStream;


    public static void main(String[] args) throws IOException
    {

        Socket socket = new Socket();
        socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0));
        socket.connect(serverAddress);
        inputStream = socket.getInputStream();
        outputStream = socket.getOutputStream();


        sendAuthorizationPacket();
        sendCommand("say test");


        socket.close();
    }


    static void sendCommand(String command) throws IOException
    {
        byte[] packet = createPacket(1000, EXECUTE_COMMAND_PACKET, command);
        outputStream.write(packet);


    }


    static boolean sendAuthorizationPacket() throws IOException
    {

        byte[] packet = createPacket(1000, AUTHORIZATION_PACKET, rconPassword);
        outputStream.write(packet);

        parsePacket();
        ByteBuffer response = parsePacket();
        return (response.getInt(8) == AUTHORIZATION_RESPONSE) && (response.getInt(4) == 1000);
    }

    static byte[] createPacket(int id, int type, String command)
    {
        ByteBuffer packet = ByteBuffer.allocate(command.length() + 16);
        packet.order(LITTLE_ENDIAN);
        packet.putInt(command.length() + 12).putInt(id).putInt(type).put(command.getBytes()).putInt(0);
        return packet.array();
    }

    static ByteBuffer parsePacket() throws IOException
    {

        byte[] length = new byte[4];
        inputStream.read(length);
        ByteBuffer packet = ByteBuffer.allocate(4120);
        packet.order(LITTLE_ENDIAN);
        packet.put(length);

        for (int i = 0; i < packet.getInt(0); i++)
        {
            packet.put((byte) inputStream.read());
        }

        return packet;

    }
}
В консоли выводит: Rcon connection from: /192.168.0.101
Но команда не отправляется.
Заранее спасибо!
 
Последнее редактирование модератором:
Решение
Вот код, которым я отправляю RCON

Java:
package test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import static java.nio.ByteOrder.LITTLE_ENDIAN;

public class main {


    static final int EXECUTE_COMMAND_PACKET = 2;
    static final int AUTHORIZATION_PACKET = 3;
    static final int AUTHORIZATION_RESPONSE = 2;
    static final SocketAddress serverAddress = new InetSocketAddress("0.0.0.0", 25575);
    static final String rconPassword = "ssja";
    static InputStream inputStream;
    static OutputStream outputStream;


    public static void...
Вот код, которым я отправляю RCON

Java:
package test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import static java.nio.ByteOrder.LITTLE_ENDIAN;

public class main {


    static final int EXECUTE_COMMAND_PACKET = 2;
    static final int AUTHORIZATION_PACKET = 3;
    static final int AUTHORIZATION_RESPONSE = 2;
    static final SocketAddress serverAddress = new InetSocketAddress("0.0.0.0", 25575);
    static final String rconPassword = "ssja";
    static InputStream inputStream;
    static OutputStream outputStream;


    public static void main(String[] args) throws IOException
    {

        Socket socket = new Socket();
        socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0));
        socket.connect(serverAddress);
        inputStream = socket.getInputStream();
        outputStream = socket.getOutputStream();


        sendAuthorizationPacket();
        sendCommand("say test");


        socket.close();
    }


    static void sendCommand(String command) throws IOException
    {
        byte[] packet = createPacket(1000, EXECUTE_COMMAND_PACKET, command);
        outputStream.write(packet);


    }


    static boolean sendAuthorizationPacket() throws IOException
    {

        byte[] packet = createPacket(1000, AUTHORIZATION_PACKET, rconPassword);
        outputStream.write(packet);

        parsePacket();
        ByteBuffer response = parsePacket();
        return (response.getInt(8) == AUTHORIZATION_RESPONSE) && (response.getInt(4) == 1000);
    }

    static byte[] createPacket(int id, int type, String command)
    {
        ByteBuffer packet = ByteBuffer.allocate(command.length() + 16);
        packet.order(LITTLE_ENDIAN);
        packet.putInt(command.length() + 12).putInt(id).putInt(type).put(command.getBytes()).putInt(0);
        return packet.array();
    }

    static ByteBuffer parsePacket() throws IOException
    {

        byte[] length = new byte[4];
        inputStream.read(length);
        ByteBuffer packet = ByteBuffer.allocate(4120);
        packet.order(LITTLE_ENDIAN);
        packet.put(length);

        for (int i = 0; i < packet.getInt(0); i++)
        {
            packet.put((byte) inputStream.read());
        }

        return packet;

    }
}
В консоли выводит: Rcon connection from: /192.168.0.101
Но команда не отправляется.
Заранее спасибо!
Код с rubukkit и там написано, что он не работает. Там еще скинули ссылку на гитхаб
 
Код с rubukkit и там написано, что он не работает. Там еще скинули ссылку на гитхаб

А, спасибо, не заметил про ссылку на гитхаб, спасибо!
 
Назад
Сверху Снизу