• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    해결됨

질문있습니다

23.07.24 09:07 작성 조회수 147

0

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

 

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

답변 1

답변을 작성해보세요.

1

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

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

참고하시기 바랍니다.

채널톡 아이콘