본문 바로가기
netty

netty 초보 패킷을 받는법

by 키르시스 2021. 5. 7.
728x90

전에 올렸던 자료에서 패킷을 검증하는방법은 올렸었다. 그럼 패킷을 검증하고 나서 패킷을 어떻게 해야할까?

 

보통은 헤더 바디 테일 부분으로 나눠져 있고 그 안에서도 여러가지 형태로 나눠져 있는데 이것은 약속되어있는

 

프로토콜마다 매우 다른형태이며, 그래서 이렇게 해라 저렇게 해라 라고 할수는 없지만 방법은 모두 같다.

 

맨 처음에 나는 패킷을 받아서 크기대로 나누라고 했을때 아니 패킷을 어떻게 크기대로 나누라는거야?

 

라고 생각했지만 프로토콜 문서에 보면 그 해당 패킷의 형태에 따라 몇바이트인지 모두 지정되어있다.

 

그럼 그 바이트 크기에 맞춰서 이것을 잘라주면 되는데 방법은 다음과 같다.

 

나는 패킷을 나눠줄때 이러한 방법으로 나눠줬고 처음에 있는 buffer.order는 byteordering이다 이것은 매우중요하고 이

 

것을 실수할 경우에는 값을 완전히 이상하게 받을수 있으므로 꼭 잘 체크하길 바란다. 그 이후에는 다른것들은 순서대

 

로 1byte,1byte,1byte,1byte,4byte로 나눠줬다.이러한 방식으로 간단하게 나눠 줄 수 있고 비록 지금 이것은 헤더 부분이

 

지만 바디와 테일 부분도 마찬가지의 방법으로 나눠줄수있다. 그리고 패킷을 받을때 바디부분은 조금 다른 방식으로 처

 

리를 해줬는데, 지금 이것 같은 경우는 length변수에 바디부분의 전체 길이가 나와있다. 그래서 패킷을 받는부분에서, 

 

헤더부분을 파싱해주고 길이부분만을 불러와서 헤더부분을 파싱했으니 버퍼에서 사라졌으니까 남은 패킷에서 바디길

 

이부분 모두를 바디로 보내주고 남은 테일 길이부분을 (테일은 아에 두 단어로 정해져 있었다.) 파싱해줬다. 이러한 방식

 

으로 패킷을 나눠줬다. 물론 헤더와 바디부분의 나누는 방식은 조금 다르긴 했지만 일단 헤더부분의 패킷의 나누는 방

 

식을 알게된다면 약간의 응용으로 바디부분이나 테일부분도 가능하게 된다.

 

초보라서 매우 허접했지만 끝

728x90

'netty' 카테고리의 다른 글

정보처리기사 시험 팁  (0) 2021.05.11
프로그래머 출장 전 + 출장 중 미세 팁  (0) 2021.05.10
vo get set 배열 실수  (0) 2021.05.07
java사용 유용한 꿀 팁!!!  (0) 2021.05.07
logback설정 방법!!  (0) 2021.05.07

댓글