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

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

박상인님의 프로필 이미지
박상인

작성한 질문수

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

RecvBuffer

recv buffer 관련하여.

작성

·

350

0

  • 안녕하세요 루키스님 좋은 강의 감사드립니다.

다름이 아니라, iocp 로 서버를 만드는 도중,

 

http 와 연동되는 간단한 서버를 만들고 있습니다.

코드에서 보이다 싶이 RegisterRecv()  로 등록 시켜주고, 같은 Event 가 RECV 일시, 처리를 진행하게 되는데,

문제는 http Request 의 크기가 특정 버퍼보다 크게 된다면, 

 

RegisterRecv ( ) 를 걸어도 버퍼가 안읽히는 겁니다. 이럴때는 어떻게 해야 하나요 ? 

그리고 다시 창을 로드했을때, (예를 들어 localhost:port 를 브라우저로 로드) 하면, 잘리고 난 그 뒤의 버퍼가 나옵니다..


- wsaBuf.buf 의 크기보다 큰 데이터가 왔을때, 따로 설정해주어야 하는 값이 있나요..?

답변 1

2

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

Recv할 때 현재 여유있는 버퍼 크기를 명시하기에,
그보다 많은 데이터가 왔더라도
일단 유저레벨 버퍼에는 Recv에서 명시한 크기만큼만 복사가 됩니다.
따라서 상대방이 그보다 더 큰 데이터를 보낸다 하더라도 사실
분할해서 받아준 후, 조립해서 데이터를 수신할 수 있습니다.

그러나 웹통신을 해야 한다면 IOCP로 직접 만들기보다는
외부 라이브러리를 사용하는게 어지간해서는 좋다고 봅니다.
(특히 https 로 넘어가면 암호화 부분과 절차가 아주 골치 아픕니다)


박상인님의 프로필 이미지
박상인
질문자

답변 감사합니다. !

박상인님의 프로필 이미지
박상인

작성한 질문수

질문하기