【问题标题】:SIP data not flushed over Android TCP socketSIP 数据未通过 Android TCP 套接字刷新
【发布时间】:2013-04-15 12:38:48
【问题描述】:

我的套接字通信有问题 -> SIP 服务器和安卓设备。 我无法通过 TCP 发送大于 800 字节的 SIP 数据包。如果数据包小于 800 字节,一切正常。在尝试发送 SIP 数据包之前建立了成功的 TCP 握手,但仍然没有。 我是这样发送数据的;

Socket socket = new Socket(ip,port);
OutputStream out =new OutputStream(socket.getOutputStream()); 
out.flush();  
out.write(msg);  

发送功能没有问题。奇怪的是,对于大于 800 字节的 SIP 数据包,一些数据包在从设备发送后几分钟就被传递到服务器。 如果我们尝试发送数据包大小大于 800 字节的其他数据而不是 SIP,则一切正常,服务器会接收到它。问题仅在于 SIP 数据包 > 800 字节。并非所有 android 设备都会出现此问题。例如: Galaxy s plus – 问题。 Nexus 4 – 问题。 Nexus s – 没问题。等等。 如果我将 SIP 数据包分成两部分,问题就解决了,但是我想找出为什么 SIP 数据没有被刷新而其他数据被立即发送。应该没有什么区别。

【问题讨论】:

    标签: android sockets tcp sip


    【解决方案1】:

    您没有提供有关版本的信息,但我敢打赌您在 Android 4.0.* 中遇到了问题。

    我还敢打赌,只有当您通过 TCP 使用端口 5060 时才会出现此问题。

    这是这些 Android 版本中的一个已知问题,当前的解决方法是更新到 Android 4.1(您不能要求用户这样做!)或避免这些设置。 任何其他端口或 UDP 都可以使用。

    您可以在这里找到bug report

    【讨论】:

    • 是的,我通过 TCP 更改了默认 SIP 端口,这解决了问题。关于版本,我不仅在 Android 的 4.0.* 中看到了问题,而且在 Android 2.3.5 中也看到了正确的问题。跨度>
    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2012-10-13
    • 2020-12-03
    • 2018-07-19
    • 2011-09-09
    相关资源
    最近更新 更多