Мой вопрос о Java. Я пытаюсь получить пакет под названием MSG_CHAT_SERVER_PUBLI C с сервера чата. Этот пакет содержит имя пользователя и сообщение, которое он отправляет. Протокол находится в этом списке протоколов: http://uruguayos-xtremos2011.blogspot.com/p/ares-protocol-aresnuevo.html?m=1 В методе Publi c вы можете увидеть, как сервер формирует пакет: https://github.com/AresChat/sb0t/blob/128b2755cdfedaf498d66fbcdf9fda010f4d3087/core/TCPOutbound.cs
В методе обслуживания вы можете увидеть, как клиент чата получает пакеты: https://github.com/AresChat/cb0t/blob/master/cb0t/RoomPanel/AresSocket.cs В методе Eval_Publi c вы можете увидеть, как пакет читается в клиенте чата: https://github.com/AresChat/cb0t/blob/master/cb0t/RoomPanel/Room.Handler.cs
У меня есть следующий код (но в EditText не отображается пакет для чтения; я ожидаю обратного):
InputStream in = sock.getInputStream();
while (sock.isConnected()) {
// get message length, first 2 bytes
byte[] lengthBytes = new byte[2];
in.read(lengthBytes);
// convert to int
int messageLength = lengthBytes[0] << 8 | lengthBytes[1];
// get the protocol byte
int procotol = in.read();
// get message, length bytes
byte[] messageBytes = new byte[messageLength];
s.chat.append(Integer.toString(in.read(messageBytes)));
// separate message, first x bytes are username
int length = 0;
// get username length
for (byte messageByte : messageBytes) {
if (messageByte == 0) break;
length++;
}
// extract username
byte[] username = new byte[length];
System.arraycopy(messageBytes, 0, username, 0, length);
int pos = length + 1;
// message length
length = messageBytes.length - pos;
// extract message
byte[] message = new byte[length];
System.arraycopy(messageBytes, pos, message, 0, length);
s.chat.append("message length: " + messageLength + "\nprocotol: " + procotol + "\nusername: " + new String(username) + "\nmessage: " + new String(message));
}
Возможно, вам будет легче, если я скажу вы то, что я сделал до сих пор: https://1drv.ms/u/s! An2GIBqaxDQCgTZ_PCnapHpoRjny
Заранее спасибо за вашу помощь