【问题标题】:java.net.SocketException: Operation not permittedjava.net.SocketException:不允许操作
【发布时间】:2010-09-11 14:05:26
【问题描述】:

代码:

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 发送作品。

【问题讨论】:

  • (a) 下次请格式化您的代码。 (b) 问题是什么?
  • 1) 肯定。问题:为什么要进行手术
  • 2) 为什么会出现不允许操作的错误?有什么办法可以解决?
  • 你的APP上网权限设置了吗?

标签: android sip udpclient


【解决方案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 行为的确切原因仍不清楚,但我会继续说下去。

【讨论】:

    猜你喜欢
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 2021-02-10
    • 2021-01-01
    • 2014-11-01
    • 2014-06-30
    相关资源
    最近更新 更多