1

ソケット通信に問題があります - > SIP サーバーと Android デバイス。800 バイトを超える TCP 経由で SIP パケットを送信できません。パケットが 800 バイト未満であれば、すべて問題ありません。SIP パケットの送信を試行する前に確立された TCP ハンドシェイクが成功しましたが、まだ何も送信されていません。このようにデータを送信します。

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

送信機能に問題はありません。奇妙なことに、SIP パケットが 800 バイトを超える場合、デバイスから送信されてから数分後に一部のパケットがサーバーに配信されます。パケットのサイズが 800 バイトを超える SIP 以外のデータを送信しようとすると、すべて問題なくサーバーが受信します。問題は、800 バイトを超える SIP パケットのみです。この問題は、すべての Android デバイスで発生するわけではありません。例: Galaxy s plus – 問題。Nexus 4 – 問題。Nexus s – 問題ありません。SIP パケットを 2 つの部分に分割すると問題は解決しますが、SIP データがフラッシュされず、他のデータがすぐに送信される理由を知りたいです。違いはないはずです。

4

1 に答える 1

1

バージョンに関する情報は提供されませんでしたが、Android の 4.0.* に問題があるに違いありません。

また、TCP 経由でポート 5060 を使用する場合にのみ問題が発生することも間違いありません。

これは、これらの Android バージョンの既知の問題であり、現在の回避策は、Android 4.1 に更新する (ユーザーに更新を要求することはできません!) か、それらの設定を回避することです。他のポートまたは UDP は機能します。

ここに 1 つのバグ レポートがあります。

于 2013-04-15T22:12:32.920 に答える