ByteBuf 초기 용량을 늘리는 방법을 알려주십시오.
에서 같은 상황 : ByteBuf의 최대 용량보다 소득 메시지보다 경우ByteBuf 초기 용량 크기
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
byte[] byteinput = new byte[in.readableBytes()];
in.readBytes(byteinput);
//further handling...
}
- 난의 cutted 데이터를 얻을. 이 프로젝트가 전체적이고 비 청크진 메시지를 얻는 것이 중요합니다.
ByteBuf의 초기 용량을 bootstraps childOptions 어딘가에 설정하거나 cannel.config() ... ChannelInitializer 내부에 설정해야한다고 가정합니다.
그리고 난
ch.config().setReceiveBufferSize(1024)
설정과 같은 여러 가지 방법을 시도하지만 난 여전히 ByteBuf 용량 (예를 들면. 496)의 같은 값을 가지고있다.
UPD
나는 Wireshark를 내 프로토콜 트래픽을 발견하고, 내 테스트 사용자 클라이언트에서 밖으로와에서 손상되지 않은 것 1,4k까지 패킷. 이 문제는 netty 설정의 문제 일뿐입니다. 운영 체제 소켓 버퍼는 메시지를 자르지 않습니다.
'수신 버퍼 크기'는 커널의 소켓 수신 버퍼 크기입니다. Netty, NIO 또는 Java와는 아무 관련이 없습니다. – EJP
사실입니다. 하지만 현재 사용중인 컴퓨터의 경우 입력 소켓 버퍼가 8k 이상입니다. 내 메시지는 498 바이트로 줄어 듭니다. 그리고 ByteBuf 인스턴스 필드를 볼 때 "(최대) 용량 = 498"을 참조하십시오. 이 ByneBuf의 공장 또는 초기 설정이 어디에 있는지 찾아 초기 용량을 변경해야합니다. 1MB를 1 청크로 보내지 않으려 고합니다. 1k가 필요합니다. – Asprelis