StreamSocketControl.NoDelay 속성

정의

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 = streamSocketControl.noDelay;
streamSocketControl.noDelay = boolean;
Public Property NoDelay As Boolean

속성 값

Boolean

bool

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

Windows 요구 사항

앱 기능
ID_CAP_NETWORKING [Windows Phone]

설명

NoDelay 속성은 StreamSocket 개체에서 Nagle 알고리즘을 사용하도록 설정하거나 사용하지 않도록 설정할지 여부를 제어합니다. NoDelay 속성의 기본값은 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 최적화도 사용할 때 몇 가지 부작용이 발생할 수 있습니다.

StreamSocket이 연결되기 전에 이 속성을 설정할 수 있습니다. StreamSocket이 연결되면 속성을 설정하면 오류가 발생합니다.

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

적용 대상

추가 정보