常规 DatagramSocket 工作正常... ICE4J DatagramSocket 似乎截断数据!?
发送大小的数据包为 2,500,但接收端始终为 1500(使用常规 Java DatagramSocket,接收数据包大小与发送大小相同)。
接收结束:
Component rtpComponent = stream.getComponent(org.ice4j.ice.Component.RTCP);
CandidatePair rtpPair = rtpComponent.getSelectedPair();
videoDS = rtpPair.getDatagramSocket();
在一个线程中:
byte[] buffer = new byte[250000000];
final DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
videoDS.receive(dp);
final byte[] clone = new byte[dp.getLength()];
System.arraycopy(dp.getData(), dp.getOffset(), clone, 0, dp.getLength());
final Image image = new Image(new ByteArrayInputStream(clone));
发送端几乎相同,只是它在 Android 上运行......
非工作代码之间的唯一区别是第一段用于发送和接收。如果我使用普通的 Java Socket,它会工作(但当然不是在路由器后面,这就是我使用 Ice4J 的原因)。