인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

snu님의 프로필 이미지
snu

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

TCP 서버 질문입니다.

작성

·

153

0

Client가 100바이트씩 10번 보내어 서버가 1000바이트씩 읽는 것에대해서는 이해를 했는데요. (데이터의 경계가 없기 떄문)
서버의 recv 함수의 3번째 인자로 1000바이트를 설정할 경우 1000바이트를 TCP recv 버퍼에서 응용프로그램 버퍼에 복사할때까지 블로킹 되는 걸로 알고있는데 recv 함수의 3번째 인자를 1000으로 설정했어도 리턴값이 50바이트같이 1000보다 작은 숫자가 나올 수 있나요? 아니면 계속 1000바이트를 읽을때까지 블로킹 되는 것인가요?

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

상대방이 몇 바이트를 보낼지 모르는데,
원하는 사이즈 받을때까지 대기하는 것은 말이 안 됩니다.

recv의 3번째 인자는 버퍼의 최대 크기고
이 최대 사이즈를 적어주면 실제로 받은 데이터 크기를 따로 뱉어줍니다.
recv 함수의 반환값의 의미를 문서에서 찾아보시기 바랍니다.

https://docs.microsoft.com/en-us/windows/win32/api/winsock/nf-winsock-recv

snu님의 프로필 이미지
snu
질문자

감사합니다 영상에서처럼 질문전에 문서를 더 찾아봐야겠네요

snu님의 프로필 이미지
snu

작성한 질문수

질문하기