Windows(最好是c#) -如何发现我们从socket读取数据的速度不够快

本文关键字:数据 读取 socket 不够 速度 我们 Windows 何发现 发现 | 更新日期: 2023-09-27 18:17:08

如果我没有足够快地从套接字读取数据,TCP协议将减小滑动窗口大小,并且发送方可能在发送过程中被阻塞(正如这里讨论的,当我没有足够快地调用' recv '时会发生什么?)

我如何在Windows上检测接收端这种情况-最好直接在c#代码中,而不影响从套接字读取的性能?其他监控解决方案(perfmon, wireshark)也是可以接受的,但对于我的场景来说远没有那么理想。

确切的场景是什么?假设服务器应用程序可以以高达1Mbps的速度传输数据,但是我的客户端应用程序只能以0.5Mbps的速度接收数据。我如何在客户端应用程序中发现TCP流控制正在启动并降低传输速度?

我经过Socket。可用属性http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.available.aspx,想知道这是否可能是查询此信息的可推荐的方式?

Windows(最好是c#) -如何发现我们从socket读取数据的速度不够快

你最好尽可能快地阅读,而不是浪费时间试图让系统告诉你你读得不够快,这只会进一步减慢你的阅读速度。

如果你正在以最快的速度阅读,但发送方仍然被阻塞,TCP工作正常,你无能为力,除非找一台更快的机器。

TCP窗口由内核处理,您无法使用。我猜你可能会比较ReceiveBufferSize与接收的字节数。