개나소나고생
5k
2019-10-29 08:21:19
2
225

Netty 한글 송수신 문의


안녕하세요. Netty Framework를 통해 한글 문자열 송수신 하려고 하는데요.

서버측 코드에서 입력 받은 문자열을 아래와 같이 구현 하였습니다.

	@Override
	public void channelRead(ChannelHandlerContext ctx, Object msg) {
		 ByteBuf in = (ByteBuf) msg;
		 Charset charset = Charset.forName("KSC5601");
		 String readMessage = ((ByteBuf) msg).toString(charset);
		 
		 System.out.println("Server received: " + readMessage);
		 ctx.writeAndFlush(in);
	}

위와 같이 구현 후 윈도우 실행 창을 통해 telnet명령으로 연결 후 문자열 보내봤는데..

한글이 정상적으로 수신되지 않아 문의 드립니다.

여러글을 찾아보았는데 어떤곳에서는 Encode/Decoder를 추가해서 처리해라 라고 답변을 주셨는데..

뭐가 맞는건지 알 수 없어서 문의 드립니다.

0
0
  • 답변 2

  • 곰라이언
    106
    2019-10-29 09:26:27

    Charset을 KSC5601로 디코딩하셨는데 보낼때에도 KSC5601로 인코딩하신건가요?

    0
  • action
    2k
    2019-10-29 10:32:28

    접근하는 클라이언트도 네티로 쉽게 구성할 수 있습니다.

    telnet으로 하는건 한글보다는 간단한 문자열 숫자나 영어들 송수신 되는지 확인만 하시고

    실제로는 charset을 확실히 정해서 통신을 구성하시는게 좋습니다.

    telnet으로 되는데 실제 서비스 주고받아야 하는곳에는 안될수 있으니까요.


    아니면 Decoder를 handler에서 등록하셔서 ByteBuf로 직접 받으신다음에

    문자열을 char단위로 읽어서 String변환하는 방법도 있습니다.

    인코더 디코더를 추가하라는 방법은 직접 Encoder로 설정해서

    패킷이나 메시지단위로 charset을 맞춰서 보내고,

    받는 Decoder에서도 마찬가지 방식으로 풀어서 쓰라는 말이 아닐까 싶습니다.


    어떤방식이 맞는지보다는 여러방법이 있으니 편한데로, 현재상황에 맞는데로 써라일거 같네요.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.