Доброго времени суток коллеги!
накипел один вопрос:
Есть очень простой пример
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 сек ,у меня тоже достаточно быстро все выполняется,
но вешается на чтении последнего пакета,спасибо за советы!