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