我有一個繼承自TcpClient的類。在那個班裏,我有一個處理回答的方法。在這種方法中,我打電話給我的NetworkStream和MyBase.GetStream,並調用Read。NetworkStream.Read延遲.Net
這可以正常工作,第一次讀取塊的時間太長。而且太長時間我的意思是套接字已經收到了大量的數據,但直到達到任意限制時纔會讀取它。我可以看到它使用數據包嗅探器WireShark收到了大量的數據。
我已經將接收緩衝區設置爲少量,並且非常少量(如只是幾個字節)無濟於事。我對傳遞給讀取方法的緩衝區字節數組做了同樣的處理,但仍然延遲。
或者換句話說。我下載600k。下載需要5秒鐘(稍微超過100k /秒連接到服務器是有道理的)。最初的Read調用需要2-3秒,並告訴我只有256個字節可用(256是Recieve緩衝區和我讀入的數組的大小)。然後奇蹟般地,其他幾十萬字節可以在256字節的塊中讀取,每個字節只有幾個進程滴答。使用數據包嗅探器,我知道在最初的2-3秒內,套接字已經收到了不止256個字節。我的連接不是.25k /秒3秒,然後400k 2秒。
當他們進來時,我如何從套接字中獲取字節?
你的網卡和你的應用之間還有什麼?禁用防火牆,病毒掃描程序,CRL,代理,看看會發生什麼。 – 2009-12-27 12:24:40
nobugz,這是問題。這是我的反病毒應用程序。它必須緩衝一定數量的字節才能在將它送入套接字緩衝區之前進行掃描。 這是有道理的,因爲我正在使用一個衆所周知的端口,它會掃描。我不敢相信我沒有想到這一點。 您應該將其作爲回答發佈,以便將其標記爲好。 – Gilbes 2009-12-28 03:36:18