У меня есть клиентское приложение на Android с использованием Java и сервер на моем ноутбуке в игре Unity.Оба находятся в одной сети, и я получил их для подключения.Когда я отправляю небольшое строковое сообщение от клиента к серверу, сервер блокирует его с таким предупреждением: ReadMessageBlocking: possible allocation attack with a header of 1298494342 bytes.
Как мне даже начать приближаясь к этому блокпосту?
Для сервера яЯ использую библиотеку Unity Mirror , которая построена на основе Telepathy framework.Что касается клиента, я следовал за клиентской частью этого учебника .
Этот (из Telepathy) содержит соответствующий метод (ReadMessageBlocking
), который выдает это предупреждение.Я попытался установить для MaxMessageSize
значение int.MaxValue
(что составляет 2 ГБ), чтобы хотя бы принять сообщение, чтобы я мог проверить его, напечатав его содержимое, но безрезультатно.
У меня нетпроблема с ReadMessageBlocking
, это не зря.Меня беспокоит: почему в мире мой андроид якобы отправляет заголовок размером 1 ГБ со строкой?Что я могу с этим сделать?
Редактировать: Это соответствующая функция, которая отправляет сообщение от клиента (как указано в учебном руководстве, упомянутом ранее.)
void sendMessage(final String message) {
new Thread(new Runnable() {
@Override
public void run() {
try {
if (null != socket) {
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
out.println(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
Для сервера (Unity) дляполучить, я ничего не писал.Предупреждение исходит от внутренней функции обработки сообщений Telepathy, которая, как мне кажется, ReceiveLoop здесь.