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

손태정님의 프로필 이미지
손태정

작성한 질문수

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

소켓 입/출력 버퍼 (예제포함)

질문있습니다

해결된 질문

작성

·

191

0

 1. send()함수는 패킷을 보내는 함수가 아니라 소켓의 출력 버퍼에 데이터를 쓰는 것이고, recv()함수는 소켓의 입력버퍼에서 데이터를 읽어들이는 거라고 보면 될까요??

 

  1. 데이터를 모아서 한번에 패킷을 보내는 것이 패킷의 갯수를 줄여서 성능 상의 이점이 있다는 건 알겠지만 데이터를 받을 때도 입력 버퍼에서 모아놓았다가 한번에 읽어들이는 것이 좋다는 것은 잘 모르겠네요...ㅠㅠ
    데이터를 받을 때 패킷을 보낼 때와 마찬가지로 일정 시간 대기해서 데이터가 쌓이도록 한 다음 읽어들인다는 건가요??

답변 1

1

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

  1. 네, 맞습니다. 기본적으로 소켓은 Buffered I/O를 합니다.

  2. 패킷이 중간에 유실될 경우 재송신 받아 빈틈을 매꿔야 하기 때문입니다. 이 때문에 일정 시간 Wait 합니다. 그리고 그 시간은 TCP 구현마다 조금씩 다릅니다. 성능에 직결되는 부분이기도 합니다.

참고하시기 바랍니다.

손태정님의 프로필 이미지
손태정

작성한 질문수

질문하기