我有一个Android应用程序,需要每100毫秒通过协议UDP发送数据.每个UDP数据包平均有15000字节.数据包以广播形式发送
下面每100毫秒行都会循环一次.
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, broadcast, 9876);
clientSocket.send(sendPacket);
Run Code Online (Sandbox Code Playgroud)
应用程序开始正常工作,但在大约1分钟后,接收到的数据包的频率会降低,直到数据包没有到达目的地.
UDP数据包的最大大小的理论限制(在Windows上)为65507字节
我知道网络的媒体MTU是1500字节,当我发送一个更大的数据包时,它被分成几个片段,如果一个片段没有到达目的地,整个包就会丢失.
我不明白为什么在最初的1分钟内数据包被正确发送,一段时间后数据包不再到达.所以我想知道解决这个问题的最佳方法是什么?
我正在使用以下代码将来自android设备的位图转换为字节数组,并通过UDP发送给Java SE应用,它运行良好,我的问题是如何将此字节数组转换为java.awt.Image。
Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Run Code Online (Sandbox Code Playgroud)
在Android中,我可以做类似的事情
ImageView myImg = (ImageView) findViewById(R.id.img_view);
myImg.setImageBitmap(BitmapFactory.decodeByteArray(bytSig, 0, bytSig.length))
Run Code Online (Sandbox Code Playgroud)