전에 올렸던 자료에서 패킷을 검증하는방법은 올렸었다. 그럼 패킷을 검증하고 나서 패킷을 어떻게 해야할까?
보통은 헤더 바디 테일 부분으로 나눠져 있고 그 안에서도 여러가지 형태로 나눠져 있는데 이것은 약속되어있는
프로토콜마다 매우 다른형태이며, 그래서 이렇게 해라 저렇게 해라 라고 할수는 없지만 방법은 모두 같다.
맨 처음에 나는 패킷을 받아서 크기대로 나누라고 했을때 아니 패킷을 어떻게 크기대로 나누라는거야?
라고 생각했지만 프로토콜 문서에 보면 그 해당 패킷의 형태에 따라 몇바이트인지 모두 지정되어있다.
그럼 그 바이트 크기에 맞춰서 이것을 잘라주면 되는데 방법은 다음과 같다.
나는 패킷을 나눠줄때 이러한 방법으로 나눠줬고 처음에 있는 buffer.order는 byteordering이다 이것은 매우중요하고 이
것을 실수할 경우에는 값을 완전히 이상하게 받을수 있으므로 꼭 잘 체크하길 바란다. 그 이후에는 다른것들은 순서대
로 1byte,1byte,1byte,1byte,4byte로 나눠줬다.이러한 방식으로 간단하게 나눠 줄 수 있고 비록 지금 이것은 헤더 부분이
지만 바디와 테일 부분도 마찬가지의 방법으로 나눠줄수있다. 그리고 패킷을 받을때 바디부분은 조금 다른 방식으로 처
리를 해줬는데, 지금 이것 같은 경우는 length변수에 바디부분의 전체 길이가 나와있다. 그래서 패킷을 받는부분에서,
헤더부분을 파싱해주고 길이부분만을 불러와서 헤더부분을 파싱했으니 버퍼에서 사라졌으니까 남은 패킷에서 바디길
이부분 모두를 바디로 보내주고 남은 테일 길이부분을 (테일은 아에 두 단어로 정해져 있었다.) 파싱해줬다. 이러한 방식
으로 패킷을 나눠줬다. 물론 헤더와 바디부분의 나누는 방식은 조금 다르긴 했지만 일단 헤더부분의 패킷의 나누는 방
식을 알게된다면 약간의 응용으로 바디부분이나 테일부분도 가능하게 된다.
초보라서 매우 허접했지만 끝
'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 |
댓글