netty (4) java의 ByteBuffer

netty (4) java의 ByteBuffer 이번 포스팅은 netty의 ByteBuf를 알아보기전에 자바의 ByteBuffer에 대해서 알아보겠다. 자바의 ByteBffer는 java 1.4 에 추가 NIO 바이트 버퍼이다. 자바의 Buffer에는 ByteBuffer, CharBuffer, IntBuffe, ShortBuffer, …등등 여러가지가 있다. 이런 버퍼클래스는 내부의 배열 상태를 관리하는 속성이 있다. capacity 버퍼에 저장할 수 있는 데이터의 최대 크기 한번 저장하면 변경 할 수 없다. position 읽기 또는 쓰기가 작업 중인 위치를 나타낸다. 객체가 생성될 때 0으로 초기화 되고 입력 혹은 읽을때.. Read More

netty (3) 채팅 서버 만들어보자!

netty (3) 채팅 서버 만들어보자! 이번에는 배운걸 기준으로 채팅 서버를 만들어 볼 예정이다. 아주 간단하게 메시지를 보내는거와 귓속말을 할 수 있는 서비스를 만들어보자. public class ChatNettyServer { private static final ChatNettyServiceHandler SHARED = new ChatNettyServiceHandler(); public static void main(String[] args) { EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<SocketChannel>() { protected void initChannel(SocketChannel ch) throws Exception.. Read More

netty (2) 이벤트 핸들러

netty 이번엔 이벤트 핸들러에 대해 알아보자 ChannelInboundHandlerAdapter 클래스는 ChannelInboundHandler 인터페이스를 사용한 어댑터이다. 실질적인 구현에 대한 로직은 없다. 아래는 ChannelInboundHandler 인터페이스의 내용이다. void channelRegistered(ChannelHandlerContext ctx) throws Exception; void channelUnregistered(ChannelHandlerContext ctx) throws Exception; void channelActive(ChannelHandlerContext ctx) throws Exception; void channelInactive(ChannelHandlerContext ctx) throws Exception; void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception; void channelReadComplete(ChannelHandlerContext ctx) throws Exception; void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception; void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception; void exceptionCaught(ChannelHandlerContext ctx, Throwable cause).. Read More