2011-12-28 22 views
6

IdTCPServer veya IdTCPClient kullanarak mevcut bant genişliği hızı nasıl alınır?Geçerli bant genişliği (indirme) hızı nasıl alınır?

İstemcinin sunucudan verileri ne kadar hızlı indirdiğini bilmek istiyorum.

ör .: İndiriyor hızı: OnWorkBegin, OnWork 450 kbps

+3

Lütfen etiket bilgilerini sorunuzun başlığına koymayın. İlk etapta etiketlere sahip olma amacını yener ve soru konusunun daha uzun ve okunması zor hale getirir. Ayrıca, sürümler arasında büyük farklılıklar olan Indy gibi bir şey kullandığınızda, kullandığınız bileşenlerin hangi sürümünü eklediğinize yardımcı olur. Teşekkürler. –

cevap

9

atama işleyicileri ve bağlantının TIdTCPConnection nesnenin OnWorkEnd olaylar. OnWorkBegin olayında, aktarılan toplam beklenen baytları (önceden biliniyorsa) sağlayan bir AWorkCountMax parametresi vardır. OnWork olayında, OnWorkBegin olayının başlatılmasından bu yana kaç baytın gerçekten aktarıldığını gösteren toplam bir AWorkCount parametresi vardır.

OnWork olay tetiklenir zaman, iki olay arasında devredilen kaç bayt belirlemek için cari AWorkCount değerinden önceki AWorkCount değerini çıkarmak ve sonra iki arasında geçen sürenin miktarına göre bu değeri bölmek olaylar. Bu son değerle, gerektiğinde b/sn, kb/sn, mb/sn vb.

Eğer veri gönderme ve/tam olarak nasıl bağlı olarak, elle ateşleme başlatmak için OnWork... olayları almak için TIdTCPConnection arasında BeginWork() ve EndWork() yöntemlerini çağırmak gerekebilir. Indy'nin okuma/yazma yöntemlerinin çoğu, dahili olarak Begin/EndWork() numaralı telefonu aramaz.

İlgili konular