Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 大型TCP数据包的传输速率较慢_C#_C++_.net_Sockets_Tcp - Fatal编程技术网

C# 大型TCP数据包的传输速率较慢

C# 大型TCP数据包的传输速率较慢,c#,c++,.net,sockets,tcp,C#,C++,.net,Sockets,Tcp,我正试图通过TCP套接字从运行Blackfin533处理器的嵌入式设备转储数据,并将其绘制在计算机上运行的Win Forms程序上 下面的C++代码在嵌入式设备上运行,并按预期运行: while(1) { UpdateDataArray(); int sent = send(m_Socket, (UINT8 *)dataArray, 10000, 0); if(sent <= 0) break; } 我的猜测是,您正在等待

我正试图通过TCP套接字从运行Blackfin533处理器的嵌入式设备转储数据,并将其绘制在计算机上运行的Win Forms程序上

下面的C++代码在嵌入式设备上运行,并按预期运行:

while(1)
{   
    UpdateDataArray();          
    int sent = send(m_Socket, (UINT8 *)dataArray, 10000, 0);
    if(sent <= 0)
        break;
}

我的猜测是,您正在等待“下一步”通过,并且使用TCP将阻止它,直到完成3次行程(发送/响应/确认)。如果您正在尝试流式传输内容,那么UDP可能是更好的选择aproach@Neijwiert但是为什么当我只发送1400字节时,即使在我等待“下一个”的时候,它也会这么快?那么当你调试它时会发生什么呢?您是否正在接收数据,但恰好不是“下一个”完美?这不是由于TCP缓冲吗?设置
TCP\u NODELAY
以强制尽快发送数据包。大概
while(1)
{   
    int recvLen = recv(m_Socket, (char *)dataInArray, 513, 0);
    if(recvLen <= 0)
        break;

    if(!ReceivedCommand("Next"))
        break;

    UpdateDataArray();          
    int sentLen = send(m_Socket, (char *)dataOutArray, 10000, 0);
    if(sentLen <= 0)
        break;
}
while(1)
{
    refreshRateStopWatch.Start();

    byte[] msg = Encoding.ASCII.GetBytes("Next");

    int bytesSent1 = senderSock.Send(msg);
    if (bytesSent1 == 0)
    {
        return;
    }

    int bytesRec1 = senderSock.Receive(bytes);
    if (bytesRec1 == 0)
    {
        return;
    }

   refreshRateStopWatch.Stop();
   refreshRate = refreshRateStopWatch.ElapsedMilliseconds;
   refreshRateStopWatch.Reset();

    Plot(bytes);
}