본문 바로가기

IT for developer/Netty

Netty 예제 분석 - Echo

 Echo

http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/echo/package-summary.html

Discard 와 다른점은 클라이언트가 전달한 데이터를 서버가 응답한다는 것이다.

핸들러에 messageReceived라는 함수가 다음과 같이 구현되었다.

47      @Override
48      public void messageReceived(
49              ChannelHandlerContext ctx, MessageEvent e) {
50          // Send back the received message to the remote peer.
51          transferredBytes.addAndGet(((ChannelBuffer) e.getMessage()).readableBytes());
52          e.getChannel().write(e.getMessage());
53      }

e.getChannel().write(e.getMessage()) --> 받은 메세지를 그대로 응답한다.



클라이언트측 코드는 연결할 때 한번 메시지를 보내고 서버로부터 메시지를 받으면 다시 동일한 메시지를 보낸다.

66      @Override
67      public void channelConnected(
68              ChannelHandlerContext ctx, ChannelStateEvent e) {
69          // Send the first message.  Server will not send anything here
70          // because the firstMessage's capacity is 0.
71          e.getChannel().write(firstMessage);
72      }
73  
74      @Override
75      public void messageReceived(
76              ChannelHandlerContext ctx, MessageEvent e) {
77          // Send back the received message to the remote peer.
78          transferredBytes.addAndGet(((ChannelBuffer) e.getMessage()).readableBytes());
79          e.getChannel().write(e.getMessage());
80      }


Discard 예제와 나머지는 거의 동일하므로 패스