안녕하세요 Netty 초보자입니다.^^;
훌륭한 Netty를 이용해 서버 데몬 만들어 보다 질문이 있어 이렇게 문의 드립니다.
> Netty Version: netty-all-4.0.9.Fianl.jar
> 목적: 전문길이가 1024보다 큰 소켓서버 데몬 개발 시 수신전문, 송신전문을 (ByteBuf의 길이만큼이 아닌) 한번에 수신/송신을 하고 싶음.
> 질문: 전문길이를 미리 예측할 수 없을 때 소켓으로부터 데이터를 한번에 받고 보낼 수 있는 방법이 있나요?
즉,
전문길이를 미리 예측할수 없을때
전문 이 다 수신된다음에 Handler에게 channelRead()이벤트를 주고 싶습니다.
여기 올라온 글이나 Netty UserGuide를 보면
몇 byte가 들어올지 알고 있으면 그때까지 대기하다가 다 들어오면
out.add(in.readBytes());
하게 되어있는것 같더라구요.
(제가 이해한게 맞는지 모르겠지만;;;ㅎㅎ)
하지만
제가 하고싶은것은 몇 byte가 들어올지 모르는 상태에서
그저 socket 에서 더이상 읽을 데이터가 없을때까지 다 모아서 한번에 channelRead()에 던지고 싶습니다.
또한 클라이언트에게 1024byte이상 write를 할때도
두번에 나눠서 전송하지 말고 한번에 클라이언트에게 전송하고 싶습니다.
위 두가지 를 할 수 있는 방법이 있는 지 고수님들 한 가르침 부탁드립니다.
p.s)
setRecvByteBufAllocator(new FixedRecvByteBufAllocator())를 이용하는건
다른곳에 이희승님께서 메모리 남용이 많을것 같다고 말씀하신걸 보고 저도 피하고싶습니다.^^;