java.net.SocketException:不允许操作

时间:2010-09-11 14:05:27

标签: android sip udpclient

代码:

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。

1 个答案:

答案 0 :(得分:1)

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

我也无法在我的程序中发送SIP消息,结果发现SIPMessage中的SDP-payload存在问题,特别是在某些地方有空白。

具有SDP有效负载的SIPMessage可以通过模拟器(2.2和2.3.3)发送,但不能通过我的G1和Nexus S(使用Android 2.3.3和Android 2.3.4)发送。< / p>

DatagramSocket确实表现的确切原因尚不清楚,但我将继续使用它。