Java Socket在与RCON游戏服务器

时间:2018-02-03 17:10:45

标签: java sockets game-development

我目前正在为RCON服务器协议实现游戏服务器管理器。我通过套接字打开了与服务器的连接:

this.socket = new Socket();
this.socket.connect(new InetSocketAddress(this.getAddress(), this.getPort()), 3000);

连接正常,我可以与服务器通信并接收响应。没问题。我的问题是,当我调试通信过程并且我需要长时间从请求到读取输入流时,我收到一条消息" Keep Alive"。这是请求和响应的代码:

发送:

Rcon rcon = new Rcon();
byte[] data = rcon.constructPackage(this.getPort(), pRequestType, pPayload);
OutputStream out = this.socket.getOutputStream();
out.write(data);
out.flush();

得到:

InputStream in = this.socket.getInputStream();
byte[] header = new byte[3*4];
in.read(header);

ByteBuffer buffer = ByteBuffer.wrap(header);
buffer.order(ByteOrder.LITTLE_ENDIAN);

int length = buffer.getInt();
int id     = buffer.getInt();
int type   = buffer.getInt();
int payloadLength = length - (2*4) - 2;

byte[] payload = new byte[payloadLength];
DataInputStream dis = new DataInputStream(in);
dis.readFully(payload);
dis.read(new byte[2]);
payloadString = new String(payload);

我搜索过这个与Java和RCON相关的内容,但我没有发现它来自哪里。我猜这是一个与RCON相关的效果,因为我必须解释从RCON服务器接收的包并将其内容拆分以获得实际的有效负载。完成此操作后,有效负载字符串包含" Keep Alive"。

0 个答案:

没有答案