我实际上正在使用Jain SIP开发SIP应用程序,我注意到WireShark实际上我想在SipProvider对象的初始化过程中使用的端口不用于发送请求。例如:
public SipLayer(String username,String ip,int port) 抛出PeerUnavailableException,TransportNotSupportedException, InvalidArgumentException,ObjectInUseException, TooManyListenersException {
setUsername(username);
sipFactory = SipFactory.getInstance();
sipFactory.setPathName("gov.nist");
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "MyApp");
properties.setProperty("javax.sip.IP_ADDRESS", ip);
properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "32");
properties.setProperty("gov.nist.javax.sip.SERVER_LOG",
"textclient.txt");
properties.setProperty("gov.nist.javax.sip.DEBUG_LOG",
"textclientdebug.log");
sipStack = sipFactory.createSipStack(properties);
headerFactory = sipFactory.createHeaderFactory();
addressFactory = sipFactory.createAddressFactory();
messageFactory = sipFactory.createMessageFactory();
ListeningPoint tcp = sipStack.createListeningPoint(ip, port, "tcp");
sipProvider = sipStack.createSipProvider(tcp);
sipProvider.addSipListener(this);
}
这是我的构造函数,我正在初始化sipProvider。我使用TCP,我想使用5600端口。因此,在发送无状态请求时,我在我的方法中使用以下代码:
sipProvider.sendRequest(request);
进行捕获时,我注意到正在使用的TCP端口不是我选择的5600,例如52065。
有人可以告诉我如何强制sipProvider对象使用我的5600 TCP端口?
感谢您的帮助:)
答案 0 :(得分:0)
这是OS / Java / TCP限制。这并非不可能,但它在大多数机器上都不起作用,因此JAIN-SIP像大多数其他SIP设备一样使用短暂的端口。请参阅此回答https://serverfault.com/questions/326819/does-the-tcp-source-port-have-to-be-unique-per-host