Share via


StreamSocketListenerControl.NoDelay 속성

정의

StreamSocketListener 개체에서 연결을 수신할 때 생성된 StreamSocket 개체에서 Nagle 알고리즘이 사용되는지 여부를 나타내는 값입니다.

public:
 property bool NoDelay { bool get(); void set(bool value); };
bool NoDelay();

void NoDelay(bool value);
public bool NoDelay { get; set; }
var boolean = streamSocketListenerControl.noDelay;
streamSocketListenerControl.noDelay = boolean;
Public Property NoDelay As Boolean

속성 값

Boolean

bool

만든 StreamSocket 개체의 TCP 연결에서 Nagle 알고리즘이 사용되는지 여부를 나타내는 값입니다.

설명

NoDelay 속성은 만든 StreamSocket 개체에서 Nagle 알고리즘을 사용하도록 설정하거나 사용하지 않도록 설정할지 여부를 제어합니다. StreamSocketNoDelay 속성에 대한 기본값은 true입니다.

Nagle 알고리즘은 네트워크를 통해 전송되는 데 필요한 패킷 수를 줄여 TCP/IP 네트워크의 효율성을 개선하는 기술입니다. 알고리즘은 작은 청크로 데이터를 반복적으로 내보내는 애플리케이션으로 인한 문제를 처리하려고 합니다. TCP 패킷에는 40바이트 헤더(IP의 경우 20바이트, TCP의 경우 20바이트)가 있습니다. 따라서 앱이 패킷에서 4바이트만 보내는 경우 패킷 데이터의 오버헤드가 매우 큽니다. 이는 대부분의 키 누름이 즉시 전송되는 단일 바이트 또는 두 개의 데이터만 생성할 수 있는 원격 액세스 프로토콜(예: 텔넷 또는 보안 셸)에서 발생할 수 있습니다. 느린 링크를 통해 이러한 패킷 중 상당수가 동시에 네트워크를 통해 전송 중일 수 있습니다. Nagle의 알고리즘은 여러 작은 발신 메시지를 결합하고 한 번에 모두 전송하여 작동합니다. 보낸 사람에게 승인을 받지 않은 보낸 패킷이 있는 경우 발신자는 전체 패킷의 출력 가치가 있을 때까지 버퍼링 출력을 유지합니다. 이렇게 하면 출력을 한 번에 모두 보낼 수 있습니다. Nagle 알고리즘 적용의 영향은 대기 시간을 희생하면서 대역폭을 늘리는 것입니다. 버퍼가 내부적으로 보내는 잘 작성된 앱은 Nagle 알고리즘을 사용할 필요가 없습니다.

이 속성이 true이면 StreamSocket 은 TCP 연결에서 Nagle 알고리즘을 사용하지 않도록 설정합니다. 이 설정은 작은 메시지를 보낼 때 발생할 수 있는 지연을 줄입니다. StreamSocket을 만들 때 이 속성의 기본값은 true입니다.

이 속성이 false이면 StreamSocket 은 TCP 연결에서 Nagle 알고리즘을 사용하도록 설정합니다. 이 설정은 대기 시간을 희생하면서 대역폭을 늘릴 수 있지만 주의해서만 사용해야 합니다. Nagle 알고리즘을 사용하도록 설정하고 다른 특정 TCP 최적화도 사용할 때 몇 가지 부작용이 발생할 수 있습니다.

이 속성은 StreamSocketListener 가 들어오는 연결 수신 대기를 시작하기 전에 설정할 수 있습니다. StreamSocketListener가 들어오는 연결을 수신 대기하기 시작하면 속성을 설정하면 오류가 발생합니다.

이 속성은 StreamSocket에서 사용하는 TCP 소켓의 TCP_NODELAY 소켓 옵션 값을 설정합니다.

적용 대상

추가 정보