Я пишу некоторый сетевой код java TCP/IP ( клиент-сервер ), в котором мне приходится иметь дело со сценариями, когда отправка происходит намного быстрее, чем получение, что блокирует операции отправки на одном конце. (потому что буферы отправки и приема заполняются). Чтобы разработать свой код, я хотел сначала поиграть с такими ситуациями и посмотреть, как клиент и серверы ведут себя при различной нагрузке. Но я не могу правильно установить параметры для достижения этого обратного давления. Я попытался установить для Socket.setSendBufferSize(int size)
и Socket.setReceiveBufferSize(int size)
небольшие значения — надеясь, что это скоро заполнится, но я вижу, что операция отправки завершается без ожидание, пока клиент не воспользуется достаточным количеством уже записанных данных. (что означает, что небольшой размер буфера отправки и получения не имеет никакого эффекта)
Другой подход, который я использовал, заключается в использовании Netty и установке ServerBootstrap.setOption("child.sendBufferSize", 256);
, но даже это не очень полезно. Может ли кто-нибудь помочь мне понять, что я делаю неправильно /