2010-05-05 5 views
8

특정 소켓에 대한 TCP 수신 창을 늘리는 방법은 무엇입니까? - 나는 어떻게 모든 소켓을 위해 TcpWindowSize 레지스트리 키 ( )를 설정하는 방법을 알고 있지만, 특정 키에 대해 어떻게합니까?특정 소켓에 대한 TCP 수신 창을 늘리십시오.

MSFT's documents에 따르면, 방법은 Windows 소켓은이 소켓 당 기준으로 수신 창을 설정 setsockopt를을, 기능을 호출

입니다.

그러나 setsockopt에서

, 그것은 SO_RCVBUF에 대한 언급 :

수신 예약 총 소켓 당 버퍼 공간을 지정합니다. 이것은 SO_MAX_MSG_SIZE와 관련이없는 이며, 은 TCP 수신 창의 크기와 반드시 일치하지 않을 수도 있습니다.

그래서 가능합니까? 방법?

감사합니다.

답변

5

SO_MAX_MSG_SIZE은 UDP입니다. 여기에 MSDN :

SO_MAX_MSG_SIZE - 프로토콜에서 지원하는 메시지 지향 소켓의 최대 아웃 바운드 메시지 크기를 반환합니다. 스트림 지향 소켓에는 의미가 없습니다.

또한 은 설정할 수 없습니다.입니다.

TCP의 경우 SO_(SND|RCV)BUF을 사용하십시오.

1

나는 SO_RCVBUF가 당신이 원하는 것이라고 확신한다. 첫 번째 링크는 SO_RCVBUF가 시스템에 설정되어있는 것 이상의 TCP 창 크기를 결정할 때 가장 높은 우선 순위를 갖는다 고 말합니다. 내가 읽는 방식에서부터, 두 번째 부분은 SO_RCVBUF 크기가 시스템 수신 창 크기와 일치 할 필요가 없다는 것입니다. 즉, 사용자가 설정 한 크기와 다를 수 있습니다.

+0

감사합니다. SO_MAX_MSG_SIZE를 (를) 설정하는 방법이 있습니까? – rkellerm

0

주의해서 튜닝하고 결과를 테스트해야합니다. Windows Vista 이상에는 스마트 적응 형 창 크기 자동 조정 기능이 있습니다.이 기능은 특히 LAN 및 3G 및 고 손실 네트워크와 같은 긴 지방 네트워크에서 잘 작동하도록 창 크기를 조정합니다. 윈도우 크기를 직접 설정하면 윈도우가 윈도우 크기를 더 이상 자동으로 조정할 수 없게됩니다. 셀룰러 네트워크와 같이 특히 대기 시간이 긴 네트워크를 통해 실행해야하는 경우 성능이 저하 될 수 있습니다.

관련 문제