TCP/IP 接收速度减缓

5
我写了一个简单的 .Net 客户端,通过 TCP/IP 连接到硬件设备 (FPGA)。当我在客户端中点击一个按钮时,它会向设备发送一个小的请求 (4 字节),然后立即读取设备响应的数据块 (大约 32kb)。客户端代码大致如下:
var stream = _tcpClient.GetStream();

stream.Write(requestData, 0, requestData.Length);

using (var ms = new MemoryStream())
{
    var tempBuffer = new byte[65535];
    do
    {
        var numBytesRead = stream.Read(tempBuffer, 0, tempBuffer.Length);
        ms.Write(tempRead, 0, numBytesRead);
    }
    while(ms.Length < ExpectedResponseSize);

    _hardwareResponse = ms.ToArray();
}

在上述代码中使用秒表通常会报告2-3ms的时间来读取整个32kb响应,并且如果我缓慢地连续点击按钮(例如每秒一次),这个时间保持一致。 如果我开始更频繁地点击按钮(例如每半秒钟一次),那么几秒钟后,计时突然降至大约12ms,并保持在此处,即使我再次慢慢点击按钮。 如果我在客户端上关闭然后重新打开连接并重试,则时间又回到了2-3ms。
WireShark显示PC在更快的响应期间发送3-4个ACK,但是一旦时间降至12ms,这个数字会增加到十多个。 在两种情况下,来自FPGA的数据包数量和大小都是相同的。 我非常有信心,代码问题不在客户端或FPGA上(它们都不能更简单),直觉告诉我这是协议或网络问题。 有什么想法吗?
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接