_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
Но команда не отправляется.
Заранее спасибо!
Последнее редактирование модератором: