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,设备通过 wifi 连接。端口未阻塞。数据报从 android 1.5 moto blur 发送作品。

4

1 回答 1

1

不要发送 SIP 消息的字节,而是尝试在代码中的同一位置通过 DatagramSocket 发送一些随机字节,这应该可以工作(仅用于验证问题)

我也无法在我的程序中发送 SIP 消息,结果证明 SIP 消息中的 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 回答