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.

[参考译文] NDK/NSP-OMAPL138C6748:使用具有网络开发者套件(NDK)和 NDK 支持包(NSP)的 TCP 发送大型数据包

Guru**** 2551110 points
Other Parts Discussed in Thread: SYSBIOS

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/578444/ndk-nsp-omapl138c6748-send-large-packet-using-tcp-with-network-developers-kit-ndk-and-ndk-support-package-nsp

器件型号:SECDEVTOOL-OMAPL138C6748
Thread 中讨论的其他器件:SYSBIOS

我使用的是网络包 NDK_evm6748_elf_HelloWorld、  

NDK 版本:2.25.1.11、NSP 版本:1.10.3.15

SYSBIOS 6.46.4.53。

我从文档 SPRU524J–2001年5月第104页中获取了示例 TCP 回显服务器的代码,并修改如下:

#include
#include "HelloWorld.h"

#include
//
// dtask_tcp_hello()- UDP 回显服务器守护程序函数
//(SOCK_DGRAM、端口7)
//
//如果套接字"S"仍然打开则返回"1",如果已关闭则返回"0"
//
int dtask_tcp_echo (socket s、uint32未使用)

  结构时间 val 至;
  int i;
  char *pBuf;
  int i、j;

  句柄 hBuffer;
  (无效)未使用;
  //将套接字超时配置为5秒
  TO.tv_sec =空;//5;
  TO.tV_usec = 0;  
  setsockopt( s, SOL_socket , SO_SNDTIME,&TO, sizeof(至));
  setsockopt( s、SOL_socket、SO_RCVTIMEO、&to、sizeof (to));
  I = 1;
  setsockopt( s、IPPROTO_TCP、tcp_NOOPT、&i、4);

  for (;;)
  {
   i =(int)recvnc( s,( void **)&pBuf,0&hBuffer );
   //如果我们读取数据,则将其回显
   如果(I > 0)
   {
     J=0;
     对于(i=0;i<200;i++)
     {
      if (send(s、stringData+j、1000、0)< 0)
      {
        中断;
      }
      J=j+1000;
      recvncfree( hBuffer);
     }

   }
   //如果连接出现错误或断开,请关闭
   其他
     中断;
  }

  fdClose (s);
  //返回"0",因为我们关闭了套接字
  返回(0);

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

stringData[]是一个大小为20000的字符数组。 我希望这些200000字节字符将被发出。 但是、我只有大约100000个字节。 我尝试暂停在调试模式下的运行。 在 for 循环完成之前,程序似乎会进入 Idle_run()。 尝试在 send()之后立即将断点设置为"break",从未达到。您能给我一些建议吗?

谢谢、
Andy

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Andy:

    RTOS 团队已收到通知。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我很确定这只是一个拼写错误、但您说 stringData[]是一个包含20、000字节的字符数组、但您正在尝试发送200、000字节的数据。 您能否分享 stringData[]的实际声明?

    此外,recvncfree( hBuffer )不应该在内部环路之外?

    Alan