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配置TCP发送数据稍微多就会失败,请问这个怎么解决?

Other Parts Discussed in Thread: SYSBIOS

    默认配置CFGITEM_IP_SOCKTCPRXLIMIT为8192的时候传送1.37K大小的文件都成功了,但是我设置为CFGITEM_IP_SOCKTCPRXLIMIT为8192*64时却无法接收64k的文件,请问这个怎么解决呢?还需要配置什么吗?

    这里有几个疑问:配置CFGITEM_IP_SOCKTCPRXLIMIT应遵循什么原则吗?还有socket传送的时候PC端发送数据过大是不是不能用recvnc函数接收?因为他的返回值最大也就是2^32吧?

   急求解答。万分感谢!

  • 参考如下关于如何修改buffer size的帖子:

    http://e2e.ti.com/support/embedded/tirtos/f/355/p/203789/734062.aspx#734062

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/178524.aspx?pi303753=2

  •   我尝试增大的BUFFER size到1M:包括CFGITEM_IP_SOCKTCPRXLIMIT、TASK stack size、socket的recvBUF

    结果仿真发送超过2K的数据还是出错:

    00013.488 PBM_free: Invalid Packet
    00013.489 mmFree: Double Free
    A0=0x0 A1=0x1
    A2=0x1 A3=0x90
    A4=0x80099340 A5=0x0
    A6=0x122 A7=0x856874
    A8=0x85686c A9=0x80093e90
    A10=0x80094070 A11=0xffffffff
    A12=0x0 A13=0x0
    A14=0x0 A15=0x0
    A16=0x0 A17=0x80000000
    A18=0x8005aca0 A19=0x0
    A20=0x84ec80 A21=0x0
    A22=0x2e A23=0x0
    A24=0x470 A25=0x23
    A26=0x6000 A27=0x3300
    A28=0x0 A29=0x200
    A30=0x0 A31=0x1
    B0=0x1 B1=0x1
    B2=0x0 B3=0x10ad0e80
    B4=0x0 B5=0x800994dc
    B6=0x36c0010 B7=0x25
    B8=0x856e78 B9=0x2c0a3f0
    B10=0x80087624 B11=0x8002de80
    B12=0x0 B13=0x0
    B14=0x8009a638 B15=0x8005af88
    B16=0x0 B17=0xc0000000
    B18=0x0 B19=0x1080e380
    B20=0x1 B21=0x80048900
    B22=0xf B23=0x0
    B24=0x0 B25=0x8e0000
    B26=0x0 B27=0x0
    B28=0x2c08100 B29=0xc0
    B30=0x1c4 B31=0x856870
    NTSR=0x1020f
    ITSR=0x20f
    IRP=0x80007cd0
    SSR=0x0
    AMR=0x0
    RILC=0x0
    ILC=0x0
    Exception at 0x8002de88
    EFR=0x2 NRP=0x8002de88
    Internal exception: IERR=0x18
    Opcode exception
    Resource conflict exception
    ti.sysbios.family.c64p.Exception: line 248: E_exceptionMin: pc = 0x8002de88, sp = 0x8005af88.
    To see more exception detail, use ROV or set 'ti.sysbios.family.c64p.Exception.enablePrint = true;'
    xdc.runtime.Error.raise: terminating execution

    我尝试在接收数据后中断进行内存查看发现接收pBuf根本就不够,使用的recv函数,pBuf是在监听任务里面定义的指针,因为折腾了一天忘记记录源程序了,现在又被我修改了,,,但是无论怎么更改还是只能接收1k多点的数据,否则就会报错。