sip发送问题

发布于 2022-07-30 17:37:30 字数 1707 浏览 9 评论 1

我正在编写一个远程收发sip的服务器端程序,遇到了一个问题求助大家

我发送的消息体是中的部分头域为
SUBSCRIBE sip:vimicro@61.178.154.202:1577 SIP/2.0
To: sip:vimicro@www.aip.com
这时客户端可以接收到消息,但是返回错误代码

SIP/2.0 489
To: sip:vimicro@www.aip.com
Content-Length: 0
CSeq: 1 SUBSCRIBE
Call-ID: [email=wlss-f465ef20-698a59bf799cc84b955f6530789823e1@10.1.7.189]wlss-f465ef20-698a59bf799cc84b955f6530789823e1@10.1.7.189[/email]
Event: CONTROL
From: <sip:AIP@www.aip.com>;tag=9d4e0a4e

原以为是因为客户端不识别服务端发送的事件造成的,但是经过检查发现是用户名vimicro不能识别该ip地址“61.178.154.202:1577 ”代表的这个域造成的错误
修改程序,使消息体改变为
SUBSCRIBE sip:vimicro@www.aip.com SIP/2.0
To: sip:vimicro@www.aip.com

这时客户端无法收到消息

经过分析认为修改了消息头服务端不能找到相应的实际地址。

在这请教一下如何保持协议中的头域为
SUBSCRIBE sip:vimicro@www.aip.com SIP/2.0
To: sip:vimicro@www.aip.com
使用sip servlet发送SUBSCRIBE 消息能找到真实的地址呢
源程序
SipServletRequest req = null;
String realAddress = RegisterService.getRegisterService().getConnection(this.getAgentAddress()).getRealAddress();
   req = factoryry .createRequest(appSession, "SUBSCRIBE",FROM_ADDRESS,this.getAgentAddress());
   req.setContent(contentToXML(), "text/plain");
   req.setHeader("Event", "CONTROL");
   req.setExpires(3);
req。send();

应该如何改动使它能在消息体为
SUBSCRIBE sip:vimicro@www.aip.com SIP/2.0
To: sip:vimicro@www.aip.com
的情况下发送到真实地址上呢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

拥抱没勇气 2022-08-03 05:44:25

怎么没人解答呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文