개나소나고생
7k
2019-11-07 01:24:44
2
390

Netty 사용 관련 문의


안녕하세요. Netty + Spring Boot를 이용해 소켓 어플리케이션을 개발중에 있습니다.


네티를 이용하여 소켓 프로그래밍을 해본 경험이 많이 없다보니 머릿속에 정리도 안되고 해서 여러가지 자문이 필요하여 글을 올립니다.

1. 특정 서버 어플리케이션 서버 App있는데..이 App은 서버 App 역할도 하지만 Client역할도 같이 수행하는 목적으로 구현하려고 합니다.

특정 클라이언트 App 호출 ---> 서버 App(패킷 수신) -> 다른 서버 소켓 전문 전달

이런식으로 구현하려고 고민중인데 decode에서 수신 받은 전문을 받는 과정까지는 이해 했습니다. 받은 전문을 다시 다른 서버 로 그대로 전달해야 하는데 send관련된 비지니스 로직을 어떻게 구현해야하는게 맞는지 궁금합니다.

2. 연속 패킷이 전달 될 경우 decode메서드를 이용해 특정 바이트 길이만큼 잘라서...보내는 개념인걸 알았습니다. 근데..그다음 패킷도 읽어서 응답을 전달해야 하는데..그 다음 패킷도 응답 하려면 어떤 방식으로 구현해야 하는지 궁금합니다.

3.전문 호출 시 connection이 맺어진 상태에서 통신을 해야 하는데..내용을 분석해보면..좀 이해가 안가는게 비 동기 방식인데.. connection 계속 맺을 수 가 있는지 궁금합니다.

감사합니다.
0
  • 답변 2

  • 김백수
    1k
    2019-11-07 07:44:53

    1. 어느 메서드로 메세지를 수신하는지 몰라도 해당 인바운드 클래스를 구현하시고 그 생성자에 다른 서버의 컨넥션을 전달하세요 그리고 그 컨넥션을 인바운드 클래스의 전역변수로 사용하시면 수신 메서드에서 다른 서버 컨넥션에 send할 수 있습니다


    2. 서버쪽은 그냥 두시고 클라이언트 쪽에서 계속 send하시면 됩니다 어떤 메시지를 보낼지 모르지만 send와 flush를 적당히 잘 배치하세요. 서버쪽 수신부 메서드는 그냥 통로같은겁니다 메세지가 전달되면 처리할뿐 응답을 준비하고 그런거 없습니다

    3. 이건 tcp에 관한 내용인데 컨넥션을 계속 맺는다는게 데이터를 계속 보낸다는 뜻은 아닙니다 데이터는 비동기로 보내지되 컨넥션이 유지된다라는게 이해가 도실지 모르겠지만....



  • 김백수
    1k
    2019-11-07 07:47:39

    질문을 보니 전체적인 구조가 이해가 안가시는거 같은데 tcp에 관한 책 하나랑 네티책 하나 골라서 정독하시고 작동 방식을 온전히 이해하시면 작업속도가 훨씬 빨라질것 같네요 책읽는데 걸리는 시간을 아까워하지 마시고요

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