找回密码
 注册
搜索
查看: 3735|回复: 5

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

[复制链接]
发表于 2015-11-30 17:47:48 | 显示全部楼层 |阅读模式
在展讯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;
}
 楼主| 发表于 2015-11-30 17:53:03 | 显示全部楼层
展讯高手来支招一下[em05]
点评回复

使用道具 举报

发表于 2015-11-30 17:57:15 | 显示全部楼层
顶一下,好久没做展讯了
点评回复

使用道具 举报

 楼主| 发表于 2015-12-1 09:20:00 | 显示全部楼层
anlinanlin 发表于 2015-11-30 17:57
顶一下,好久没做展讯了

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

使用道具 举报

52RD网友  发表于 2015-12-3 12:46:17
错误代码22是EINPROGRESS并非错误,而是表示连接在处理中,你应该开的是NBIO方式吧
发表于 2015-12-3 13:29:14 | 显示全部楼层
返回结果22是 EINPROGRESS,那么就代表连接还在进行中。 你用的是NBIO方式吧。先用阻塞型的试下
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-26 11:08 , Processed in 0.086960 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表