首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

eXosip中invite的有关问题

2012-03-02 
eXosip中invite的问题小弟在做sip的项目,遇到问题啦,向另外一台机器发invite请求时,通过抓包发现对方收到

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!");        }
[解决办法]
你服务端也是自己开发的吗,这样就更好调试了啊,只要抓包看发送的协议对不对就行了
[解决办法]
你这个跟标准协议不一样别人无法分析了

热点排行