【问题标题】:Custom port SipProvider Jain SIP自定义端口 SipProvider Jain SIP
【发布时间】:2014-07-17 19:37:04
【问题描述】:

我实际上正在使用 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 端口?

感谢您的帮助:)

【问题讨论】:

    标签: java sip jain-sip


    【解决方案1】:

    这是一个 OS/Java/TCP 限制。这并非不可能,但它不适用于大多数机器,因此 JAIN-SIP 像大多数其他 SIP 设备一样使用临时端口。看到这个答案https://serverfault.com/questions/326819/does-the-tcp-source-port-have-to-be-unique-per-host

    【讨论】:

    • TCP 限制是什么意思?我的意思是在 Java 中,我可以通过提供 InetAddress 和端口号来创建 TCP 套接字。这个套接字我可以将它与它的远程端口一起绑定到远程地址,没有问题。好吧,使用 Jain SIP,这正是我想要的,我希望能够在给定端口上发送请求和接收响应。我提供的端口实际上已使用并正在侦听,但是在发送请求时,不会使用此端口:(为什么?我如何强制 sipProvider 仅使用我提供的端口而不创建另一个端口?
    • 检查我上面给出的链接。如果您认为它可以在您的系统上运行,您可以继续更改代码以尝试它。它不适用于大多数系统。除非最新版本的 Java/OS 已修复它,否则......
    猜你喜欢
    • 2011-12-28
    • 1970-01-01
    • 2015-04-08
    • 2011-01-14
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多