微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > 展讯手机平台交流 > 展讯6531D创建socket连接,sci_sock_connect返回-1,error=22,请高手帮分析下,感激

展讯6531D创建socket连接,sci_sock_connect返回-1,error=22,请高手帮分析下,感激

时间:10-02 整理:3721RD 点击:
在展讯6531D上创建一个socket连接,pap激活成功,创建socket也是成功,但是socket连接的时候,返回-1,错误代码为22.
请大神帮帮忙,看看是不是哪里出问题了。
代码如下:
#define TEST_URL_PORT 18000
#define TEST_URL_ADDRESS "223.4.58.68"
//创建调度
Socket int TEST_OpenSocket(void)
{
        struct sci_sockaddr server_addr; unsigned short  port = TEST_URL_PORT;           /* port number */
         int taiduSockfd = -1;
         int ret = 0; //初始化socket
        if((taiduSockfd = sci_sock_socket(AF_INET,SOCK_STREAM,0,taiodu_net_id)) == -1)
        {
                SCI_TRACE_LOW("TEST_OpenSocket:Socket Error, %d\n", sci_sock_errno((long)-1));
                goto SocketError;
        }
        SCI_TRACE_LOW("TEST_OpenSocket:Socket = %d\n", taiduSockfd);
        #ifdefined(NBIO_RECV)
        sci_sock_setsockopt(taiduSockfd,SO_NBIO, NULL);
        #endif //链接
        server_addr.family = AF_INET;
        server_addr.port = htons(port);
        server_addr.ip_addr = inet_addr(TEST_URL_ADDRESS);
        SCI_TRACE_LOW("TEST_OpenSocket:begin sci_sock_connect! \n");                
        SCI_TRACE_LOW("TEST_OpenSocket:server_addr.port=%d! \n",server_addr.port);
        SCI_TRACE_LOW("TEST_OpenSocket:server_addr.ip_addr=%d! \n",server_addr.ip_addr);
        SCI_TRACE_LOW("TEST_OpenSocket:sizeof(server_addr)=%d! \n",sizeof(server_addr));
        ret = sci_sock_connect(taiduSockfd,&server_addr,sizeof(server_addr)) ;
        SCI_TRACE_LOW("TEST_OpenSocket:ret , %d\n", ret );
        SCI_TRACE_LOW("TEST_OpenSocket:ret=%d! \n",ret);
        if(ret == -1)
        {
        SCI_TRACE_LOW("TEST_OpenSocket:Connect Error, %d\n", sci_sock_errno(taiduSockfd)); goto SocketError; }
        SCI_TRACE_LOW("TEST_OpenSocket:Socket connect success!");
        return taiduSockfd;
        SocketError:
        sci_sock_socketclose(taiduSockfd);
        return -1;
}

//TEST cmnet 回调函数
LOCAL void HandlePDPTESTMsg(MMIPDP_CNF_INFO_T *msg_ptr)
{
        if(PNULL == msg_ptr)
           {
                return;
        }
        SCI_TRACE_LOW("[MMIMMS]:HandlePDPTESTMsg msg_id=%d",msg_ptr->msg_id);
          switch(msg_ptr->msg_id)
            {
            case MMIPDP_ACTIVE_CNF:
                taiodu_net_id = msg_ptr->nsapi;
                SCI_TRACE_LOW("+++++++HandlePDPTESTMsg,case MMIPDP_ACTIVE_CNF,taiodu_net_id :%ld",taiodu_net_id);        
                TEST_OpenSocket();
                // MMK_PostMsg(MAIN_IDLE_WIN_ID, MSG_TEST_NETLINK_SUCCESS, PNULL,0); //发送网络激活成功 break;
            case MMIPDP_DEACTIVE_CNF:
                break;
        case MMIPDP_DEACTIVE_IND:
                SCI_TRACE_LOW("+++++++HandlePDPMsg: MMIPDP_DEACTIVE_IND");
                //MMK_PostMsg(MAIN_IDLE_WIN_ID, MSG_TEST_NETLINK_DISCONNECT, PNULL,0); //发送网络断开 break;
        default:
                break;
        }
        //SCI_FREE(msg_ptr);
}

//打开cmnet
BOOLEAN openTESTNet(void)
{
        MMIPDP_ACTIVE_INFO_T active_info = {0};
        char apn_ptr[10] = {0};//apn string
        BOOLEAN ret = FALSE;
        strcpy(apn_ptr,"cmnet");
        if (MMIPHONE_IsSimAvailable(0))//判断飞行模式
        {
                SCI_TRACE_LOW("openTESTNet");
                active_info.dual_sys = 0;
                active_info.auth_type = 1;
                active_info.priority = 3;
                active_info.app_handler = MMI_MODULE_COMMON;
                active_info.handle_msg_callback = HandlePDPTESTMsg;
                active_info.apn_ptr = apn_ptr;
                active_info.ps_service_rat = MN_TD_PREFER;        
                MNGPRS_ReadStorageExtReqQosEx(active_info.dual_sys,MN_GPRS_STORAGE_ALL,BROWSER_E,&active_info.qos_info);                
                ret =MMIAPIPDP_Active(&active_info);
        }
        else
        {
                SCI_TRACE_LOW("openTESTNet sim is not available");
        }
        SCI_TRACE_LOW("openTESTNet :MMIAPIPDP_Active = %d!", ret);
        return ret;
}

展讯高手来支招一下

顶一下,好久没做展讯了

多谢,希望达人们给点参考意见!

错误代码22是EINPROGRESS并非错误,而是表示连接在处理中,你应该开的是NBIO方式吧

返回结果22是 EINPROGRESS,那么就代表连接还在进行中。 你用的是NBIO方式吧。先用阻塞型的试下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top