2016-10-19 1 views
0

Я знаю, что вы можете позвонить socket.setReceiveBufferSize(int) и socket.getReceiveBufferSize().Есть ли способ узнать в Java максимально допустимый базовый считываемый буфер сокета TCP, настроенный в ОС?

Вы можете сделать что-то вроде:

socket.setReceiveBufferSize(Integer.MAX_VALUE); 

int after = socket.getReceiveBufferSize(); 

if (after != Integer.MAX_VALUE) System.out.println("That did not work!"); 

Основываясь на этом, я хотел бы написать Algo, чтобы правильно угадать максимальный основной сокет чтения размера буфера, выполненный на уровне операционной системы. Как я могу это сделать? Двоичный поиск? Или есть гораздо более простой способ?

ответ

0

after должен быть максимальным, если предположить, что он фактически не дал вам нужный размер. Слишком большой объем буфера может привести к повреждению производительности (а также отработанной памяти)

Я бы постарался установить его максимально, как вам хотелось бы, например. несколько МБ, и если это тоже возможно, это должно быть максимум.