-
LANShare 파일 전송 프로토콜 구축 - 프로토콜 정립토이프로젝트/LANShare 2023. 2. 5. 20:52
일반적으로 소켓통신을 하더라도, 송신자가 Send(..) 를 하더라도 해당 내용이 바로 원하는 클라이언트에게 전송되는게 아니라,
송신 버퍼에 저장이 되었다가 어느정도 쌓인 경우 전달한다.
수신자가 Recv(..) 를 하더라도 수신버퍼에 쌓여있는 데이터를 읽어온다.
그렇다면 수신자가 어떤 행위를 해야할까? 라는 생각을 했을 때 다음과 같은 생각이 들었다.
1. 송신자, 수신자가 둘 다 처음 받는 8바이트는 메타데이터 정보이다.
2. 인지를 하고 있다면 해당 메타데이터의 정보를 보고 원하는 데이터만큼 수신을 한다.
이 상태라면 원하는 데이터를 다 받을 수 있을 것 같았다.
위 그림과 같이 명령어 정보와 수신해야할 데이터의 크기 정보만 보내 후에 원래 보내고자 했던 데이터를 잘라서 보내던 통으로 보내던 계속해서 보낸다.
그렇다면 앞에 명령어와 길이를 클라이언트가 알고 있으니,
해당 길이만큼 데이터를 읽으면 될 것 같다는 생각이 들었고,
구현을 했다.
위 방식대로 구현을 했는데 따로 문제는 없는 것 같다.
'토이프로젝트 > LANShare' 카테고리의 다른 글
LANShare 파일 전송 프로토콜 구축 - 재정립 (0) 2023.02.28 LANShare 파일 전송 프로토콜 구축 - 문제점 발생 (1) 2023.01.27 LANShare 파일 전송 프로토콜 구축 (0) 2023.01.23 LANShare 프로젝트 소개 (0) 2023.01.23