Имитация обратного давления при отправке TCP

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

Другой подход, который я использовал, заключается в использовании Netty и установке ServerBootstrap.setOption("child.sendBufferSize", 256);, но даже это не очень полезно. Может ли кто-нибудь помочь мне понять, что я делаю неправильно /

5
задан Bhaskar 4 April 2012 в 16:44
поделиться