熊哥
熊哥
  • 发布:2019-03-27 21:34
  • 更新:2021-09-23 09:45
  • 阅读:5669

h5前端UDP发送经验分享,测试可用

分类:HTML5+

mui.plusReady(function(){
testThread()
})
function testThread() {
var App = plus.android.runtimeMainActivity();
var Thread = plus.ios.importClass('java.lang.Thread');
var SocketChannel = plus.android.importClass('java.nio.channels.SocketChannel');
var Selector = plus.android.importClass('java.nio.channels.Selector');
var SelectionKey = plus.android.importClass('java.nio.channels.SelectionKey');
var InetSocketAddress = plus.android.importClass('java.net.InetSocketAddress');
var SocketAddress = plus.android.importClass('java.net.SocketAddress');
var ByteBuffer = plus.android.importClass('java.nio.ByteBuffer');
var Iterator = plus.android.importClass('java.util.Iterator');
var method = plus.android.importClass('java.lang.reflect.Method');
var OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter');
//测试改良
var StrictMode = plus.android.importClass('android.os.StrictMode');
var Build = plus.android.importClass('android.os.Build');
if(Build.VERSION.SDK_INT > 9) {
var policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
selectionKey = new SelectionKey();
var Runnable = plus.android.implements('java.lang.Runnable', {
"run": function() {
//选择一组键,其相应的通道已为 I/O 操作准备就绪。
//此方法执行处于阻塞模式的选择操作。
//返回此选择器的已选择键集。
var DatagramPacket = plus.android.importClass("java.net.DatagramPacket");
var DatagramSocket = plus.android.importClass("java.net.DatagramSocket");
var InetAddress = plus.android.importClass("java.net.InetAddress");
var intent = plus.android.newObject("android.content.Intent");
console.log(intent)
// InetAddress
var addr = "192.168.2.230",
port = 8080, // 60000
TTLTime = 5000;
var ia = new InetAddress();
var address = ia.getByName(addr);
console.log(address);
// socket
var socket = new DatagramSocket();
socket.setSoTimeout(TTLTime);
var data = [104, 101, 108, 108, 111];
var packet = new DatagramPacket(data, data.length, address, port);
// 发送数据
try {
socket.send(packet);
} catch(e) {
console.log(e);
}
console.log("Invoked Object’s wahaha: ");
//selectionKeys.clear();
}
});
//方式1启动线程
App.runOnUiThread(Runnable);

}

        你可以试下,我试过可以发送UDP给后台,后台能接收到信息
0 关注 分享

要回复文章请先登录注册

1***@qq.com

1***@qq.com

回复 w***@126.com :
安卓/java开发,在socket通信单字节大小为-128-127。
大于127时,补位算法, 128时字节存储为-128, 129时字节存储为-127,以此类推到255为-1
2021-09-23 09:45
w***@126.com

w***@126.com

发送数据var data = [104, 101, 108, 108, 111]; 如果有大于127的数,接收正确吗?我这边测试一旦有大于127的数,接收到的是0,请问怎么解决?谢谢
2020-12-26 00:09
梦之风舞者

梦之风舞者

顶你,我在你的启发下,才解决这个问题
2020-11-06 14:26
1***@qq.com

1***@qq.com

有ios的吗?
2020-03-11 13:04
h***@163.com

h***@163.com

你好这个会阻塞线程吧
2019-09-20 11:21
张得愁

张得愁

怎么才能接收消息啊 能发个例子吗
2019-07-21 12:39