인프런 커뮤니티 질문&답변

dohyun_lim님의 프로필 이미지
dohyun_lim

작성한 질문수

Windows 소켓 프로그래밍 입문에서 고성능 서버까지!

파일 송수신 테스트

파일 송수신 테스트

작성

·

349

0

안녕하세요 선생님 질문이 있습니다. 4:17에서

client에서 File List를 요구한 다음 server에서 보내는 패킷에서 사이즈가 796인게

  MYCMD cmd;

cmd.nCode = CMD_SND_FILELIST;

cmd.nSize = sizeof(g_flist)+sizeof(g_aFInfo);

MYCMD의 사이즈가 맞나요....?

답변 3

0

패킷 보면 헤더 이후에 처음으로 c8 00 00 00이 존재하는데, 이 값은 10진수로 200입니다. 열거값 CMD_SND_FILELIST이 먼저 send되었기 때문이고요.

그다음이 1c 03 00 00인데 이 값은 10진수로 796이죠. cmd.nSize에 해당하는 부분인데 sizeof(g_flist)는 4이고 sizeof(g_aFInfo)는 FILEINFO 구조체가 3개 존재하는 배열입니다. FILEINFO 구조체의 크기가 264bytes입니다. 264 * 3 + 4을 하면 796이 나옵니다.

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

아니오. MYCMD 구조체의 크기는 코드 4바이트 + 페이로드 크기 정보 4바이트로 총 8바이트 뿐입니다. 그리고 송신하는 데이터의 크기가 796이 됐다면 이는 sizeof(MYCMD) + cmd.nCode의 크기입니다. 다만 패킷을 Wireshark으로 직접 확인했을 때 크기가 796바이트로 나온 경우면 TCP/IP 헤더 및 Frame 헤더를 포함한 크기 일 수 있습니다. 참고하시기 바랍니다. :)

0

안녕하세요, 인프런 AI 인턴입니다.

MYCMD 구조체의 ‘nSize’ 필드에 할당하는 값은 ‘g_flist’ 배열과 ‘g_aFInfo’ 배열의 크기를 합한 것으로 보입니다. 여기서 ‘g_flist’와 ‘g_aFInfo’는 서버가 클라이언트에게 파일 목록을 보낼 때 사용되는 배열로 추정됩니다. 이들 크기의 정확한 합을 nSize에 설정함으로써 서버가 클라이언트로 보낼 데이터의 크기를 명시하는 것으로 보이며, 이는 MYCMD 구조체 자체의 사이즈가 아니라 전송하려는 파일 리스트 데이터의 사이즈를 의미합니다.

해당 구조체의 정확한 정의를 볼 수 없기 때문에, MYCMD의 nSize가 왜 이렇게 설정되었는지 자세한 내용은 해당 강의의 컨텍스트를 참고해야 할 것 같습니다. 만약 강의 자료를 찾으시거나 강의 내용에 더 자세한 설명이 필요하시다면, 강의실 내에서 관련 자료를 다운로드 받거나 질문을 통해 답변을 받을 수 있습니다.

강의 자료는 강의실에 진입한 후 커리큘럼에서 강의별로 제공되는 자료를 다운로드 할 수 있습니다. 추가로 질문이 있는 경우 강의 페이지의 ‘문의하기’ 기능을 이용하시면 됩니다.

도움이 필요하신 경우 인프런 홈페이지 (https://www.inflearn.com/faq) FAQ 또는 문의하기 버튼을 통해 관련 도움을 받아보시기 바랍니다.

dohyun_lim님의 프로필 이미지
dohyun_lim

작성한 질문수

질문하기