2017-05-02 14 views
1

Netty에서 UDP 프로토콜로 protobuf 페이로드를 사용하는 방법은 무엇입니까? 맞춤 protobuf 프로토콜로이 예를 들어 주시겠습니까? 그리고 TCP 프로토콜에 관한 한 가지 예가 있습니다.Netty에서 UDP 프로토콜로 protobuf 페이로드를 사용하는 방법? 맞춤 protobuf 프로토콜로이 예를 들어 주시겠습니까?

공공 무효 바인드 (INT 포트) 예외 {

EventLoopGroup bossGroup = new NioEventLoopGroup(); 
    EventLoopGroup workerGroup = new NioEventLoopGroup(); 
    try { 
     ServerBootstrap b = new ServerBootstrap(); 
     b.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 100) 
       .handler(new LoggingHandler(LogLevel.INFO)).childHandler(new ChannelInitializer<SocketChannel>() { 
        @Override 
        public void initChannel(SocketChannel ch) { 
         ch.pipeline().addLast(new ProtobufVarint32FrameDecoder()); 
         ch.pipeline().addLast(new ProtobufDecoder(RichManProto.RichMan.getDefaultInstance())); 
         ch.pipeline().addLast(new ProtoBufServerHandler()); 
        } 
       }); 


     ChannelFuture f = b.bind(port).sync(); 

     System.out.println("init start"); 

     f.channel().closeFuture().sync(); 
    } finally { 
     bossGroup.shutdownGracefully(); 
     workerGroup.shutdownGracefully(); 
    } 
} 
+1

먼저 코드를 사용해보십시오. –

+1

내가 알고있는 Netty는 UDP를 사용할 때 NioDatagramChannel을 사용해야합니다. 나는 protobuf를 사용하고 싶지만 NioDatagramPacket을 가지고있다. 그럼 protobuf로 변환하는 방법? – Sakura

답변

0

나는 또한 같은 데 문제가 발생합니다. 하지만 byte []로 변환 한 DatagramPacket을 수신 한 다음 parseFrom (byte []) 메서드를 사용하여 ProtoBuf 객체로 역 직렬화하는 코드를 리펙토링하려고합니다.