Сообщение SslStream Read производительность от 18.02.2015 22:06
Изменено 18.02.2015 22:11 codenet
Доброго времени суток коллеги!
накипел один вопрос:
Есть очень простой пример
все работает,все отлично,Но падает очень сильно производительность на момент чтения последнего пакета ,
из за этого одна итерация цикла выполняется по 11-13 секунд. Не могу понять где я ошибся,fiddler выполняет запрос за 0.3 сек ,у меня тоже достаточно быстро все выполняется,
но вешается на чтении последнего пакета,спасибо за советы!
накипел один вопрос:
Есть очень простой пример
protected static bool OnCertificateValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
private static void Main(string[] args)
{
var url = new Uri("https://www.okcoin.cn");
IPEndPoint connectPoint = new IPEndPoint(Dns.GetHostAddresses(url.Host).First(), url.Port);
var sb = new StringBuilder();
sb.AppendLine("GET https://www.okcoin.cn/api/ticker.do?symbol=btc_cny HTTP/1.1");
sb.AppendLine("User-Agent: Tester");
sb.AppendLine("Host: www.okcoin.cn");
sb.AppendLine();
var headerBytes = Encoding.UTF8.GetBytes(sb.ToString());
var sw = new Stopwatch();
for (int i = 0; i <= 10; i++)
{
sw.Start();
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
socket.Connect(connectPoint);
using (var stream = new NetworkStream(socket, true))
{
var callback = new RemoteCertificateValidationCallback(OnCertificateValidation);
//using ( var sslStream = new SslStream(stream))
using (var sslStream = new SslStream(stream, false, callback))
{
sslStream.AuthenticateAsClient(url.Host);
sslStream.Write(headerBytes, 0, headerBytes.Length);
sslStream.Flush();
var buffer = new byte[2048];
var bytes = 0;
while ((bytes = sslStream.Read(buffer, 0, buffer.Length)) > 0) //<<<< тут
Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, bytes));
}
}
}
sw.Stop();
Console.WriteLine(">>>>>>>>>>>>>>>>>>ms {0}", sw.ElapsedMilliseconds);
sw.Reset();
}
Console.WriteLine("end");
Console.ReadKey();
}
все работает,все отлично,Но падает очень сильно производительность на момент чтения последнего пакета ,
из за этого одна итерация цикла выполняется по 11-13 секунд. Не могу понять где я ошибся,fiddler выполняет запрос за 0.3 сек ,у меня тоже достаточно быстро все выполняется,
но вешается на чтении последнего пакета,спасибо за советы!
SslStream Read производительность
Доброго времени суток коллеги!
накипел один вопрос:
Есть очень простой пример
все работает,все отлично,Но падает очень сильно производительность на момент чтения последнего пакета ,
из за этого одна итерация цикла выполняется по 11-13 секунд. Не могу понять где я ошибся,fiddler выполняет запрос за 0.3 сек ,у меня тоже достаточно быстро все выполняется,
но вешается на чтении последнего пакета,спасибо за советы!
накипел один вопрос:
Есть очень простой пример
protected static bool OnCertificateValidation(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
private static void Main(string[] args)
{
var url = new Uri("https://www.okcoin.cn");
IPEndPoint connectPoint = new IPEndPoint(Dns.GetHostAddresses(url.Host).First(), url.Port);
var sb = new StringBuilder();
sb.AppendLine("GET /api/ticker.do?symbol=btc_cny HTTP/1.1");
sb.AppendLine("User-Agent: Tester");
sb.AppendLine("Host: www.okcoin.cn");
sb.AppendLine();
var headerBytes = Encoding.UTF8.GetBytes(sb.ToString());
var sw = new Stopwatch();
for (int i = 0; i <= 10; i++)
{
sw.Start();
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
socket.Connect(connectPoint);
using (var stream = new NetworkStream(socket, true))
{
var callback = new RemoteCertificateValidationCallback(OnCertificateValidation);
//using ( var sslStream = new SslStream(stream))
using (var sslStream = new SslStream(stream, false, callback))
{
sslStream.AuthenticateAsClient(url.Host);
sslStream.Write(headerBytes, 0, headerBytes.Length);
sslStream.Flush();
var buffer = new byte[2048];
var bytes = 0;
while ((bytes = sslStream.Read(buffer, 0, buffer.Length)) > 0) //<<<< тут
Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, bytes));
}
}
}
sw.Stop();
Console.WriteLine(">>>>>>>>>>>>>>>>>>ms {0}", sw.ElapsedMilliseconds);
sw.Reset();
}
Console.WriteLine("end");
Console.ReadKey();
}
все работает,все отлично,Но падает очень сильно производительность на момент чтения последнего пакета ,
из за этого одна итерация цикла выполняется по 11-13 секунд. Не могу понять где я ошибся,fiddler выполняет запрос за 0.3 сек ,у меня тоже достаточно быстро все выполняется,
но вешается на чтении последнего пакета,спасибо за советы!