-
LANShare 파일 전송 프로토콜 구축 - 재정립토이프로젝트/LANShare 2023. 2. 28. 20:14
지금까지 세 번째 프로토콜을 수정 중입니다...
뭔가 억지로 만든 것 같아서, 다음과 같은 프로토콜을 새롭게 정의했습니다.
전체 패킷의 크기 정보를 아예 통으로 전달하는 방식입니다.
간단히 내가 보내고자 하는 데이터를 정의해보면 다음과 같습니다.
- 명령어 정보 (4바이트)
- 실제 데이터의 길이 (4바이트)
- 실제 데이터 (n 바이트)
위의 세 데이터가 "Hello World" (총 11바이트 ANSI 문자열)인 경우,
명령어 정보를 담을 공간 4바이트 + 실제 데이터 길이를 담을 공간 4바이트 + 실제 데이터 11바이트를 합하면 총 19바이트입니다.
그리고 이제 총 19바이트를 담을 수 있는 공간을 4바이트 크기로 하나 더 만듭니다.
그러면 총 23바이트가 됩니다.
위와 같이 보내면, 받는 쪽에서는 가장 먼저 앞의 8바이트 크기를 읽은 다음,
이 데이터의 크기와 보내는 명령어 정보를 확인합니다.
- 메시지를 보내는 명령이라면?
- 데이터 크기를 구하고, 그에 맞는 크기를 동적 할당한 후, 실제 데이터를 버퍼에 읽습니다.
이와 같은 형태로 처리하면 유연하게 처리할 수 있을 것입니다.
사실, 위의 4바이트라는 것 자체가 애매한 기준입니다.
왜냐하면, 파일 정보를 보내는 경우 파일의 용량을 보내야 하는데, 그때는 문제가 조금 심각해집니다.
32비트 / 64비트 컴파일러에 따라 읽을 수 있는 크기가 한정적이기 때문입니다.
물론 이 부분은 8바이트 크기로 처리하면 되긴 할 것 같습니다만...
설명을 위해 위와 같이 간단하게 처리하였습니다.
'토이프로젝트 > LANShare' 카테고리의 다른 글
LANShare 파일 전송 프로토콜 구축 - 프로토콜 정립 (0) 2023.02.05 LANShare 파일 전송 프로토콜 구축 - 문제점 발생 (1) 2023.01.27 LANShare 파일 전송 프로토콜 구축 (0) 2023.01.23 LANShare 프로젝트 소개 (0) 2023.01.23