java - javax.sip.SipException:发送请求时发生 IO 异常
问题描述
我想使用 Jain sip api 注册到 sip 服务器。但是,javax.sip.SipException: IOException occured while Sending Request
返回错误“”。
如果我无法正确生成 sip 消息,则网络不可达:数据报发送失败。
输出我作为逻辑编写的代码中的 REGISTER SIP 消息似乎是正确的。我只是不能确定端口。
代码生成的REGISTRANT TICKET如下。请求:注册 sip:test.spoiler.com.tr:5060 SIP / 2.0 呼叫 ID:3235ae8a968869c2525bf1035d05d168@192.168.56.1 CSeq:1 注册来自:;tag = 2065198559 To: Via: SIP / 2.0 / UDP 192.168.56.1:50600 // 我也试过在这里写 Sip 服务器的 IP 地址 Max-Forwards: 70 Expires: 5 Content-Length: 0
My sip server that I want to connect to is: test.spoiler.com.tr
AOR address-> sip: test.spoiler.com.tr: 5060
UAS address -> sip: 800@test.spoiler.com.tr: 5060
我还同时将 UAS 地址指向了我要注册的 Sip 的用户。所以; toHeader-> fromHeader-> ; tag = 2065198559 我写了我的 sip 服务器地址,以便 Via 连接到第一个 sip 服务器。在正常情况下,它会获取本地主机上的 IP。虽然我尝试了本地主机 IP,但结果并没有改变。
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.ParseException;
import java.util.*;
import javax.sip.*;
import javax.sip.address.*;
import javax.sip.header.*;
import javax.sip.message.*;
public class exampleListener implements SipListener {
SipFactory sipFactory;
SipStack sipStack;
ListeningPoint listeningPoint;
SipProvider sipProvider;
HeaderFactory headerFactory;
AddressFactory addressFactory;
MessageFactory messageFactory;
int tag = (new Random()).nextInt();
long LCseqDegeri = 1;
exampleGUI GUI;
public exampleListener(exampleGUI gui) {
try {
this.GUI = gui;
sipFactory = SipFactory.getInstance();
sipFactory.setPathName("gov.nist");
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "sipStack");
sipStack = sipFactory.createSipStack(properties);
String sIP = InetAddress.getLocalHost().getHostAddress();
int iPort = GUI.getPort();
String protocol = "udp";
listeningPoint = sipStack.createListeningPoint(sIP, iPort, protocol);
sipProvider = sipStack.createSipProvider(listeningPoint);
sipProvider.addSipListener(this);
headerFactory = sipFactory.createHeaderFactory();
addressFactory = sipFactory.createAddressFactory();
messageFactory = sipFactory.createMessageFactory();
GUI.setBATDAU("SIP Başlatıldı: " + sIP + ":" + iPort);
} catch (UnknownHostException | TooManyListenersException | InvalidArgumentException | ObjectInUseException | PeerUnavailableException | TransportNotSupportedException ex) {
System.out.println(ex.getMessage());
}
}
public void sendMessage() throws UnknownHostException {
try {
Address desAddress = addressFactory.createAddress(GUI.getUAS());
System.out.println("UAS destination Address: " + desAddress);
Address AORAddress = addressFactory.createAddress(GUI.getAOR());
System.out.println("AOR Address: " + AORAddress);
ToHeader toHeader = headerFactory.createToHeader(desAddress, null);
System.out.println("toHeader: " + toHeader);
FromHeader fromHeader = headerFactory.createFromHeader(desAddress, String.valueOf(tag));
System.out.println("fromHeader: " + fromHeader);
String sIP = InetAddress.getLocalHost().getHostAddress();//GUI.getSipServer();
System.out.println("Via ilk sip sunucusuna bağlanır. SIP Sunucusu: " + sIP);
ViaHeader viaHeader = headerFactory.createViaHeader(sIP, GUI.getPort(), "udp", null);
ArrayList viaHeaders = new ArrayList();
viaHeaders.add(viaHeader);
System.out.println("viaHeader:" + viaHeader);
MaxForwardsHeader maxForwardsHeader = headerFactory.createMaxForwardsHeader(70);
System.out.println("maxForwardsHeader: " + maxForwardsHeader);
CallIdHeader callIdHeader = sipProvider.getNewCallId();
System.out.println("callIdHeader: " + callIdHeader);
CSeqHeader cSeqHeader;
cSeqHeader = headerFactory.createCSeqHeader(LCseqDegeri, Request.REGISTER);
System.out.println("cSeqHeader: " + cSeqHeader);
ExpiresHeader expiresHeader = headerFactory.createExpiresHeader(5);
URI requestURI = AORAddress.getURI();
Request request = messageFactory.createRequest(requestURI, "REGISTER",
callIdHeader, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwardsHeader);
request.addHeader(expiresHeader);
System.out.println("----------------------------------------------------");
System.out.println("request: " + request);
sipProvider.sendRequest(request);
GUI.displayMessage("Talep : " + request.toString());
} catch (ParseException | InvalidArgumentException | SipException ex) {
for (StackTraceElement ste : ex.getStackTrace()) {
System.out.println(ste);
}
System.out.println(ex);
}
}
错误的详细描述
gov.nist.javax.sip.SipProviderImpl.sendRequest(SipProviderImpl.java:741)
exampleBasic.exampleListener.sendMessage(exampleListener.java:90)
exampleBasic.exampleGUI.cmdGOIActionPerformed(exampleGUI.java:199)
exampleBasic.exampleGUI.access$200(exampleGUI.java:16)
exampleBasic.exampleGUI$3.actionPerformed(exampleGUI.java:115)
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
java.awt.Component.processMouseEvent(Component.java:6533)
javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
java.awt.Component.processEvent(Component.java:6298)
java.awt.Container.processEvent(Container.java:2238)
java.awt.Component.dispatchEventImpl(Component.java:4889)
java.awt.Container.dispatchEventImpl(Container.java:2296)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4897)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:4534)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:4475)
java.awt.Container.dispatchEventImpl(Container.java:2282)
java.awt.Window.dispatchEventImpl(Window.java:2746)
java.awt.Component.dispatchEvent(Component.java:4711)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
java.awt.EventQueue.access$500(EventQueue.java:97)
java.awt.EventQueue$3.run(EventQueue.java:709)
java.awt.EventQueue$3.run(EventQueue.java:703)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
java.awt.EventQueue$4.run(EventQueue.java:733)
java.awt.EventQueue$4.run(EventQueue.java:731)
java.security.AccessController.doPrivileged(Native Method)
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
javax.sip.SipException: IO Exception occured while Sending Request
我的库:
- javax.sip -> jain-sip-api 1.2.1
- javax.sip -> jain-sip-ri 1.2.244 - org.mobicents.slee.media -> media-rtp 1.0
- javax.media jmf 2.1.1e - org.zenframework.z8.dependencies.commons log4j-1.2.17 2.0
我如何得到 IO 错误。我该如何解决?当我浏览互联网时,我没有找到这个错误的解决方案。
解决方案
推荐阅读
- mongodb - KeyError:从 MongoDB 同步数据时在 Elastic2DocManager 上“找到”
- django - 使用附加关键字参数时如何测试 DRF 序列化程序?
- jquery - 使用 jquery 将 iframe 内容导出为 pdf
- python - 具有嵌套数组的 Numpy 点积
- scala - Scala宏:根据Config生成类方法
- javascript - 使用批处理在谷歌日历上添加多个事件在托管上不起作用
- android - Android:程序类型已经存在:android.arch.lifecycle.LiveData$LifecycleBoundObserver
- java - Spring中单元测试如何插入记录(无删除方法)
- ubuntu - Ubuntu 16.04 中的 Caffe 库在哪里?
- django - 无法从 '"/quiz/%d/api"%quiz_id' 解析剩余的 '%quiz_id'