[Netty] Discard 서버 생성해보기
💡 작성자는 모든 과정을 IntelliJ 로 진행 하였습니다.
1. Project 생성하기
빌드 도구 설정

New Project → Gradle 선택 → SDK와 사용 언어 선택 후 Next를 눌러주세요.
💡 꼭 Gradle로 선택 하지 않아도 되고, Java나 Maven을 사용 하셔도 됩니다.
프로젝트 명 설정

Project Name을 설정 해주고 Finish를 눌러주세요.
Netty 패키지 의존성 추가

아래 링크에 접속해서 패키지 확인 후 build.gradle에서 implementation 시켜주세요.
2. DiscardServer 클래스 생성하기
package discard;
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.NioServerSocketChannel;
public class DiscardServer {
public static void main(String[] args) {
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) throws Exception { // [4]
ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new DiscardServerHandler());
}
});
ChannelFuture future = serverBootstrap.bind(8888);
future.channel().closeFuture().sync();
} catch (Exception e) {
e.printStackTrace();
} finally {
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
}
}
3. DiscardServerHandler 클래스 생성하기
package ex1.discard;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
public class DiscardServerHandler extends SimpleChannelInboundHandler<Object> {
@Override
public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
// 아무 행동도 하지 않음.
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
cause.printStackTrace();
ctx.close();
}
}
4. 연결 해보기


5. 마치며
이번엔 단순히 SocketServer를 오픈 했지만 그 외 특별한 동작은 없는 DiscardServer에 대해 작성을 해보았고, 다음번엔 EchoServer, EchoClient에 대해서 작성해보겠습니다.
댓글남기기