본문 바로가기

프로그래밍/Netty 기초6

06. Discard Client 만들기 클라이언트를 만들다 보면 Netty가 정말 편한다는것을 알수 있다. 전체코드를 한번보고 서버와 다른점을 한번 더 보자 DiscardClient.java Server와 특별하게 다른점은 안보일것이다. 살짝 다른 부분만 보자. 아래 코드는 하나의 java에 클래스 두개 만들어서 사용했다 접속하자 마자 Say Hello... 만 보내주는 코드이다. 그 외 Handler가 동작하는 모습은 서버와 동일하다고 보면 된다. 이벤트도 동일한 순서대로 일어나는것을 볼수 있다 import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.config.Configurato.. 2022. 1. 7.
04. ChannelHandler 란 ChannelHandler는 편의점에 손님이 들어왔을때 어떻게 응대할까?를 정의하는 것이라고 생각하면 쉬울 듯 하다. 즉, 어린 친구가 편의점에 왔을 때 눈높이를 낮추고 조곤조곤 이야기하고, 진상 손님이 오면 대응하는게 달라지 듯이 나름대로의 메뉴얼을 머릿속으로 가지고 있듯 여기서 나름대로의 메뉴얼을 만들 수 있을것 같다 ChannelHandler의 종류 ChannelHandler는 들어온 이벤트를 처리하는 ChannelInboundHandler와 나가는 이벤트를 처리하는 ChannelOutboundHandler가 있고, ChannelDuplexHandler는 나가는것과 들어오는것 이벤트를 두개다 처리하는 핸들러가 있다. ChannelHandler를 정의하자 하단 코드에서 p.addLast(new Dis.. 2022. 1. 6.
05. channeInboundAdapter 이벤트 순서 상당히 많은 이벤트 들이 있지만 실제 코딩상 주로 사용하는걸 보면 channelActive ▶ channelRead ▶ channelInactive 이렇게만 구현을 보통 많이 한다. 나머지는 필요 할(?) 경우도 있으니 아 이런게 있구나 이정도만 알아도 될듯 하다.. 실제 주요 흐름은 아래와 같다 더보기 channelRegistered, channelActive ▼ channelRead ▼ channelReadCompleted ▼ channelInactive, channelUnregistered 각각 살펴보자 1. void channelRegistered(ChannelHandlerContext ctx) The Channel of the ChannelHandlerContext was registered w.. 2022. 1. 6.
03. Discard 서버로 기초를 만들어보자 1. 기본 구조 netty의 가장 기본적인 코딩 구조이다. DiscardServer.java import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSo.. 2022. 1. 6.