This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3200 TCP通信速度特别慢,寻求原因

Other Parts Discussed in Thread: CC3200

本人打算用CC3200(A)发送TCP数据包给CC3200(B),他俩都作为STA模式连接在路由上,能够正常收,但是速度特别慢,几乎1分钟只能收到0.1mb,我试着将发送端每次发送的包调的大一点,结果还是一样的速度,为了排除每次断开重连的原因,我让A持续发送数据给B,结果仍然特别慢,我试着去排除他们两个的问题,我把电脑连到路由,用发送端A发给电脑,电脑端接收速度很快,排除了发送端的问题,结果用电脑又给接收端B每隔1ms发送数据,接收端也收的很快……不知道为什么用A去给B发就会出现速度特别慢的问题,附上代码(代码中是每发送10包断开重连继续发送),还请麻烦大家帮我分析一下原因,谢谢了!

 while(1)
    {
    // creating a TCP socket
    	iSockID = sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0);
    	if( iSockID < 0 )
    	{
    		ASSERT_ON_ERROR(SOCKET_CREATE_ERROR);
    	}
    	iStatus = sl_Connect(iSockID, ( SlSockAddr_t *)&sAddr, iAddrSize);
    	if( iStatus < 0 )
    	{
        // error
        sl_Close(iSockID);
        ASSERT_ON_ERROR(CONNECT_ERROR);
		}
		for(i=0;i<10;i++)
		{
			// sending packet
			 g_cBsdBuf[BUF_SIZE-6]=(char)lLoopCount>>24;
			 g_cBsdBuf[BUF_SIZE-5]=(char)lLoopCount>>16;
			 g_cBsdBuf[BUF_SIZE-4]=(char)lLoopCount>>8;
			 g_cBsdBuf[BUF_SIZE-3]=(char)lLoopCount;

			iStatus = sl_Send(iSockID, g_cBsdBuf, 262, 0 );
			if( iStatus < 0 )
			{
				// error
				sl_Close(iSockID);
				ASSERT_ON_ERROR(SEND_ERROR);
			}
		   lLoopCount++;
		}
		sl_Close(iSockID);
		MAP_UtilsDelay(8000000);

    }

以上是发送端;

      int Ret,lLoopCount;
      int socketID[4] = {-1, -1, -1, -1};
      for(i = 0; i < 4; i ++)
	  {
		  if(socketID[i] < 0)
		  {
			  socketID[i] = sl_Accept(serverID, ( struct SlSockAddr_t *)&sAddr, (SlSocklen_t*)&iAddrSize);
		  }

		  if(socketID[i] > 0)
		  {
		      int LOOP;
    		    UART_PRINT("\n\rReceiving:\n\r");
		    for(LOOP = 0;LOOP < 1024 ; LOOP++)
			     {
				  Ret = sl_Recv(socketID[i], g_cBsdBuf, 1000, 0);
				  for ( lLoopCount = 0;lLoopCount < Ret;lLoopCount++)
					  {
					  	  MAP_UARTCharPut(UARTA0_BASE,g_cBsdBuf[lLoopCount]);
					   }
				  memset(g_cBsdBuf,0,sizeof(g_cBsdBuf));
				 }
		  }
	  }
	  for(i = 0; i < 4; i ++)
	  {
		  sl_Close(socketID[i]);
		  socketID[i]= -1;
	  }

以上是接收端。