1

我的套接字通信有问题 - > SIP 服务器和 android 设备。我无法通过 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 数据没有被刷新而其他数据被立即发送。应该没有什么区别。

4

1 回答 1

1

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

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

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

您可以在此处找到一份错误报告

于 2013-04-15T22:12:32.920 回答