Есть сокеты на Java. Все данные передаются в виде объектов(хотел как проще, а вышло как обычно)
outputStream.writeObject(new Ping());
Есть задача реализовать шейпер(или подобное).
Как я вижу работу шейпера:
long x = System.nanoTime();
long BytesWrite = outputStream.writeObject(new Ping());
while((BytesWrite / (System.nanoTime() - x))>1000)
{
sleep(1);
}
Проблема в получении BytesWrite
Решаема ли она при текущем подходе?(и как?)
Есть ли смысл отказываться от такой модели и городить "свой" формат пакетов и их отправки?
Есть ли в Java что то встроенное для подобных извращений(шейпинг трафика)?
Нужно создавать ObjectOutputStream
каждый раз когда передаете объект. В качестве базового потока использовать ByteArrayOutputStream
(тоже каждый раз новый). Вытаскивать из него массив байт и передавать его в реальный поток.
PS: Ваш текущий код приведет к утечке памяти так как ObjectOutputStream
запоминает все отправленные объекты.
PPS: Стандартная сериализация ужасна, постарайтесь избегать ее.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Запускаю программу в режиме отладкиПрограмма выполняется, но в консоли надпись красным цветом:
Устанавливал jdk 12 и 8, потом удалил 8, но система запомнила только путь к 8
Мне нужно что бы ввод пользователя переходил в нижний регистр, тем самым если его спросят: "Выйти?(y/n): " и он ответит - "Y" те большими буквами,...