我有一個套接字連接接收數據並讀取它進行處理。
當數據未從套接字處理/拉得足夠快時,TCP層出現瓶頸,收到的數據被延遲(我可以通過解析後的tmestamps來判斷)。測量等待被套接字讀取的TCP字節數
如何查看有多少TCP字節正在等待被套接字讀取? (通過像Wireshark的或其他一些外部工具)
private void InitiateRecv(IoContext rxContext)
{
rxContext._ipcSocket.BeginReceive(rxContext._ipcBuffer.Buffer, rxContext._ipcBuffer.WrIndex,
rxContext._ipcBuffer.Remaining(), 0, CompleteRecv, rxContext);
}
private void CompleteRecv(IAsyncResult ar)
{
IoContext rxContext = ar.AsyncState as IoContext;
if (rxContext != null)
{
int rxBytes = rxContext._ipcSocket.EndReceive(ar);
if (rxBytes > 0)
{
EventHandler<VfxIpcEventArgs> dispatch = EventDispatch;
dispatch (this, new VfxIpcEventArgs(rxContext._ipcBuffer));
InitiateRecv(rxContext);
}
}
}
事實是,我猜「調度」以某種方式阻止接收,直到它完成,在等待時間結束了(即,被BU處理過的數據調度延遲,因此我的(假的?)結論是,有積累的插座級或之前的數據。
恐怕我並沒有真正理解你的意思:目前我無法控制發送級別。我只是在聽一個由外部服務器發送的流 –
@MikaJacobi然後我不明白你到底想做什麼。你在做什麼,你想解決什麼問題?你只能看到你的套接字接收了多少字節(即緩衝區中有多少字節,準備通過Receive()來呈現)。你可以使用'Socket.Available'屬性來請求這個數字。事先沒有辦法知道當前「有線」上有多少字節,或者甚至更遠,在另一端的發送緩衝區中。 – CodeCaster
對不起,我對這一點很陌生。請參閱編輯。 –