打印

大家帮看看,NDK程序中rxda数据为什么发不出去?

[复制链接]
3018|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
NDK, ST, ck, SOC, TE
本帖最后由 ccjgalaxy 于 2009-9-4 10:14 编辑


我就是想把rxda[6]中的数据{1,2,2,3,4,5}在接收窗口中显示出来
难道NDK网络通信也需要有中断触发吗?
要不然为什么我运行程序时,我在程序中想要发送的   1,2,2,3,4,5  不能直接发送到数据接收窗口呢?
void tskNetworkTx()
{
    SOCKET   slisten = INVALID_SOCKET;
    struct   sockaddr_in sin1;
    SCOM_Handle   hs_Netok;                                
        int hr,Tmp, rxlen;
        unsigned char rxda[6]={1,2,2,3,4,5};
        unsigned char *Databuf;
        
    /*打开SCOM模块*/
    hs_Netok   = SCOM_open("NETOK");
        
    if( !hs_Netok )
    {
        for(;;);
    }
        
        // 等待所有的初始化完成   
        TSK_sleep(500);
    SCOM_getMsg( hs_Netok, SYS_FOREVER );
        
    // Allocate the file environment for this task
    fdOpenSession( TaskSelf() );

    // Create the main TCP listen socket
    slisten = socket(AF_INET, SOCK_STREAMNC, IPPROTO_TCP);
    if( slisten == INVALID_SOCKET )
    {
        goto leave;
        }
    // Set Port = 2000, leaving IP address = Any
    bzero( &sin1, sizeof(struct sockaddr_in) );
    sin1.sin_family = AF_INET;
    sin1.sin_len    = sizeof( sin1 );
    sin1.sin_addr.s_addr = inet_addr(ServerPAddr);
    sin1.sin_port   = htons(5150);//网络端口

    //如果没有网络连接就直接跳出
        if (linkstatus==0)
        {
                goto leave;
        }

xx:        if( connect( slisten, (PSA) &sin1, sizeof(sin1) ) == SOCKET_ERROR )
    {
        printf("Connect failed (%d)\n",fdError());
        goto leave;
    }
   
        // 如果是网络错误,重新连接网络;如果是传输数据头错误,丢一帧继续传输
        for(;;)
        {
                           // Send received data back to host
                Databuf = rxda;
                        rxlen=6;
                while(rxlen > 0)
                {
                        Tmp = send(slisten, Databuf, rxlen, 0);
                        if (Tmp == rxlen)
                                break;
                        
                        if ((Tmp == SOCKET_ERROR)||(Tmp == -1))
                        {
                                printf("network failed!");
                                goto xx;
                        }
                                
                        // If partional data transfered, then continue transfer
                        rxlen -= Tmp;
                        Databuf += Tmp;
                }        
                if(hr == SOCKET_ERROR)        
                goto xx;
        }
leave:
    // We only get here on a fatal error - close the sockets
    if( slisten != INVALID_SOCKET )
    {
        fdClose( slisten );
    }
    printf("tskNetwork Fatal Error\n");
    // This task is killed by the system - here, we block
    TaskBlock( TaskSelf() );
}

相关帖子

沙发
linaliu| | 2011-12-22 10:31 | 只看该作者
我也遇到了同样的问题!请问你解决了吗?

使用特权

评论回复
板凳
blackshan| | 2014-4-18 11:17 | 只看该作者
应该用sendto吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

37

帖子

0

粉丝