ABOUT ME

Today
Yesterday
Total
  • LANShare 파일 전송 프로토콜 구축 - 재정립
    토이프로젝트/LANShare 2023. 2. 28. 20:14
    반응형

    지금까지 세 번째 프로토콜을 수정 중입니다...

    뭔가 억지로 만든 것 같아서, 다음과 같은 프로토콜을 새롭게 정의했습니다.

    전체 패킷의 크기 정보를 아예 통으로 전달하는 방식입니다.

    간단히 내가 보내고자 하는 데이터를 정의해보면 다음과 같습니다.

    1. 명령어 정보 (4바이트)
    2. 실제 데이터의 길이 (4바이트)
    3. 실제 데이터 (n 바이트)

    위의 세 데이터가 "Hello World" (총 11바이트 ANSI 문자열)인 경우,

    명령어 정보를 담을 공간 4바이트 + 실제 데이터 길이를 담을 공간 4바이트 + 실제 데이터 11바이트를 합하면 총 19바이트입니다.

     

     

    그리고 이제 총 19바이트를 담을 수 있는 공간을 4바이트 크기로 하나 더 만듭니다.

    그러면 총 23바이트가 됩니다.

    위와 같이 보내면, 받는 쪽에서는 가장 먼저 앞의 8바이트 크기를 읽은 다음,

    이 데이터의 크기와 보내는 명령어 정보를 확인합니다.

    1. 메시지를 보내는 명령이라면?
      • 데이터 크기를 구하고, 그에 맞는 크기를 동적 할당한 후, 실제 데이터를 버퍼에 읽습니다.

    이와 같은 형태로 처리하면 유연하게 처리할 수 있을 것입니다.

    사실, 위의 4바이트라는 것 자체가 애매한 기준입니다.

    왜냐하면, 파일 정보를 보내는 경우 파일의 용량을 보내야 하는데, 그때는 문제가 조금 심각해집니다.

    32비트 / 64비트 컴파일러에 따라 읽을 수 있는 크기가 한정적이기 때문입니다.

    물론 이 부분은 8바이트 크기로 처리하면 되긴 할 것 같습니다만...

    설명을 위해 위와 같이 간단하게 처리하였습니다.

    반응형

    댓글

Designed by Tistory.