专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VOIP

eXosip中invite的有关问题

发布时间:2011-07-03 07:03:06 文章来源:www.iduyao.cn 采编人员:星星草
eXosip中invite的问题
小弟在做sip的项目,遇到问题啦,向另外一台机器发invite请求时,通过抓包发现对方收到了我的invite sip消息,而且返回了100(Trying) 还有101 Dialog Establishement两条sip消息,正常情况下应该还会返回个200(OK),但不知道为什么会没返回啊,大虾帮忙看看啊

//初始化Invite请求
ret = eXosip_call_build_initial_invite(&message, theKernel.m_desAddr.c_str(), theKernel.m_srcAddr.c_str(), NULL, "This is a call for a conversation");
//组装XML信息
theDDCPAnalyse.CreateInviteRequest(strOut, "300", "D1 CIF", "H.264", "192.168.1.127 UDP 5050", "h3c-v3");
//
osip_message_set_body(message, strOut.c_str(), strOut.length());
osip_message_set_content_type(message, "Application/DDCP");

//发送
ret= eXosip_call_send_initial_invite (message);

------解决方案--------------------
呼叫的时候要协商SDP,网上不是有个小例子吗,一搜就能搜到
C/C++ code

sprintf_s(callee_url,"<sip:%s@%s:%d>",it->remote_num,urlInfo->proxy_url,urlInfo->proxy_port);
        osip_clrspace (callee_url);
        osip_clrspace (caller_url);

        //呼叫发起消息体
        osip_message_t *invite = NULL;
        //发送呼叫邀请消息
        eXosip_lock();
        int ret = eXosip_call_build_initial_invite(&invite,callee_url,caller_url,"","AudioChat");
        osip_message_set_supported (invite, "100rel");
        eXosip_unlock ();
        if (ret != 0)
        {
            //提示邀请失败
            TRACE0("--Intial INVITE failed!\n");
            CString str;
            str.Format(L"Intial INVITE failed,num is %S",it->remote_num);
            LDB(str);
            return;
        }


        char buff[4096]={0};
        CSipSdp sdp;
        if(!sdp.GetRemoteSdp(buff,callInfo,urlInfo,userInfo,controlInfo,codeInfo,it->remote_num,m_MutexPortList))
        {
            LDB(_T("构造sdp失败"));
            return;
        }

        osip_message_set_body(invite,buff,strlen(buff));
        osip_message_set_content_type (invite, "application/sdp");

        osip_message_set_header (invite, "Roster-Manager", callInfo->u_list.manager.c_str());
        osip_message_set_header (invite, "EndPoints", endponits.c_str());

        //插入定时器
        //int maxCount = m_pEndPoint->m_Timer->GetMaxTimerCount()+1;
        //m_pEndPoint->m_Timer->InsertTimer(maxCount,MAXTIMEOUT,it->remote_num);

        //发送呼叫邀请
        eXosip_lock ();
        int c_id = eXosip_call_send_initial_invite (invite);
        eXosip_unlock ();

        if(c_id <0) //send error
        {
            LDB(_T("--eXosip_call_send_initial_invite (invite)"));
            TRACE0("--eXosip_call_send_initial_invite (invite)\n!");
        }

------解决方案--------------------
你服务端也是自己开发的吗,这样就更好调试了啊,只要抓包看发送的协议对不对就行了
------解决方案--------------------
你这个跟标准协议不一样别人无法分析了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: