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

大家好,我用的是TMS320 674X的芯片,仿真软件为CCS_v5,现在我想用NDK里面的和TCP有关的程序来实现DSP和PC的数据传输,用DaemonNew 回调经过改写过后的 dtask_tcp_echo函数向PC机进行发送数据,里面的send函数是面向连接的。现在我想向PC发4M字节的数,我的和发送数据部分有关的程序如下:

recv_buffer 用来接收来自PC端的握手信号,xmit_buffer里面存着待发送的4M字节的数据。

问题如下:

1. dtask_tcp_echo用的是不是TCP协议?

2.send函数里面有关于发送buffer的长度(2*LEN)最大只能设置1024字节,为什么设置大一点就发送不了数据?

3.现在我在PC端运行接收程序,发送端每次发送1024字节的数,多次发送,为什么发送小于8次时PC能正确接收到数据,而多于8次时就接收不到数据?

4.我在每次发送数据之前加了延迟程序 for(j=0; j<2000; j++) { },这次能将数据发送到PC机上,可是速度太慢,4M字节的数据用了一分钟才发完。 我试图通过减小延迟时间来提速,但是延迟一减小,数据又发送不出去了?

请问各位大神,这个问题该怎么解决啊?希望各位不吝赐教!

  • 你好,在做BIOS上配置NDK?可以加下QQ吗,1751611453

  • 2. 最长只能支持到约1500字节/次,否则可能要用巨型帧了。

    你现在还在做这个吗?看你的程序,跟我现在的应用很像,能否跟您交流一下?我的邮箱:hxlhan123@163.com

  • 可能没配置对吧,我们传图像的,几十M/S都没问题的,但是我们遇到了发送会自动断开,报35阻塞错误,并且重连连不上。NDK2.0.0

    int dtask_tcp_receive_srv( SOCKET s, UINT32 unused )
    {
        struct timeval to;
    
        int i,bytes;
        UINT32 val;
    
        (void)unused;
    
    // Configure our socket timeout to be 5 seconds
        to.tv_sec = 5;
        to.tv_usec = 0;
        setsockopt( s, SOL_SOCKET, SO_SNDTIMEO, &to, sizeof( to ) );
        setsockopt( s, SOL_SOCKET, SO_RCVTIMEO, &to, sizeof( to ) );
    /* Configure the send buffer size */
        val = 8192;
        setsockopt(s, SOL_SOCKET, SO_SNDBUF, &val, sizeof(val));
    
    
        bytes = 0;
    
        while (1)
        {
    
            if( (bytes = send( s, data2send , len, 0 )) < 0 )
            {
                printf("send failed (%d)\n",fdError());
                break;
            }
    
        }
    }
  • Yong Zhang10 说:
    可能没配置对吧,我们传图像的,几十M/S都没问题的,但是我们遇到了发送会自动断开,报35阻塞错误,并且重连连不上。NDK2.0.0

    多长时间会断开?是24小时吗?

  • 不是24小时,不稳定,十几分钟到几小时都有可能。

    DSP做服务端,PC为客户端:程序开始时PC主动连接DSP,此后DSP在DaemonNew所创建的服务函数中发送图像数据(一直发送),上位机显示图像,均正常。

    但是运行一会儿后,send函数报错35并break掉。然后上位机重新连接的时候是连接不到DSP这边的套接字的。

    但是上位机如果主动断开连接,是可以重连的。感觉就是DSP这边的资源崩掉了。

    详情请参考:http://www.deyisupport.com/question_answer/dsp_arm/c6000_dsp/f/32/t/107107.aspx

  • 你的问题解决了吗 我在C6748上遇到类似现象 连续发送一定大小后send函数返回-1  错误号为ENOTCON 

x 出现错误。请重试或与管理员联系。