HttpWebRequest и NoDelay
От: o.kostya  
Дата: 25.06.08 11:55
Оценка:
Если использовать HttpWebRequest для небольших POST запросов, то после отправки заголовка запрос ждет некоторое время, около 200мс и отсылает данные запроса. При больших запросах данные отправляются сразу без задержки. Это похоже на описание свойства NoDelay для сокета

The Nagle algorithm reduces network traffic by causing the socket to buffer packets for up to 200 milliseconds and then combines and sends them in one packet


Каким образом можно побороть такую функциональность? А то получается маленькие запросы выполняюься 200+мс, а большие за несколько


HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create("http://");

webRequest.Method = "POST";
webRequest.ProtocolVersion = HttpVersion.Version10;

byte[] bytes = Encoding.UTF8.GetBytes(body);
webRequest.ContentLength = bytes.Length;

using (Stream requestStream = webRequest.GetRequestStream())
{
    requestStream.Write(bytes, 0, bytes.Length);
}

HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.