1

コード:

final int port = 5060;
byte[] inviteBytes = sipInvite.getBytes();
DatagramPacket packet = new DatagramPacket(inviteBytes, inviteBytes.length, toInetAddress, port);
DatagramSocket serverSocket = new DatagramSocket(port);
serverSocket.send(packet);

スローするもの:

09-10 19:18:00.107: WARN/System.err(5408): java.net.SocketException: Operation not permitted
09-10 19:18:00.117: WARN/System.err(5408):   at org.apache.harmony.luni.platform.OSNetworkSystem.sendDatagramImpl(Native Method)
09-10 19:18:00.117: WARN/System.err(5408):   at org.apache.harmony.luni.platform.OSNetworkSystem.sendDatagram(OSNetworkSystem.java: 571)
09-10 19:18:00.117: WARN/System.err(5408):   at org.apache.harmony.luni.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java: 275)
09-10 19:18:00.117: WARN/System.err(5408):   at java.net.DatagramSocket.send(DatagramSocket.java:463)
09-10 19:18:00.117: WARN/System.err(5408):   at com.icast.mypie.sip.SipClient.doConnect(SipClient.java:71)
09-10 19:18:00.117: WARN/System.err(5408):   at com.icast.mypie.sip.SipClient.run(SipClient.java:43)

Nexus 2.2、デバイスは Wi-Fi 経由で接続します。ポートがブロックされていません。データグラム送信は、android 1.5 moto ブラーから動作します。

4

1 に答える 1

1

SIPmessage のバイトを送信する代わりに、コード内の同じ場所で DatagramSocket を介してランダムなバイトを送信してみてください。これは機能するはずです (問題を確認する場合のみ)。

私のプログラムでも SIPmessage を送信できませんでした。SIPMessage の SDP ペイロードに問題があり、特にいくつかの場所に空白があることが判明しました。

SDP ペイロードを含む SIPMessage は、エミュレータ (2.2 & 2.3.3) を介して送信できましたが、G1 および Nexus S (Android 2.3.3 および Android 2.3.4) では送信できませんでした。

DatagramSocket がこのように動作する正確な理由はまだ明確ではありませんが、引き続き説明します。

于 2011-06-14T11:23:21.277 に答える