l***@126.com
l***@126.com
  • 发布:2020-09-10 15:18
  • 更新:2022-09-21 16:55
  • 阅读:2682

UDP 通信 (android)

分类:uni-app
            var DatagramPacket;  
            var DatagramSocket;  
            var InetAddress;   
            var JString;  
            var socket;  
            var port = 10000;  
            var timeout = 6000;  

            try {   
                DatagramPacket = plus.android.importClass('java.net.DatagramPacket');  
                DatagramSocket = plus.android.importClass('java.net.DatagramSocket');  
                InetAddress = plus.android.importClass('java.net.InetAddress');  
                JString = plus.android.importClass('java.lang.String');  

                if (DatagramSocket == undefined) {     
                    return;  
                }  

                socket = new DatagramSocket(port);  

                // 设置接收超时时长  
                socket.setSoTimeout(timeout);  

                // 创建广播地址  
                var broadcastAddress = InetAddress.getByName('255.255.255.255');  

                // 发送广播数据  
                var sendData = this.stringToByte("广播的数据");  
                var sendPacket = new DatagramPacket(sendData, sendData.length, broadcastAddress, port);  
                socket.send(sendPacket);  

                // 接收数据  
                var isReceive = true;    
                while(isReceive){  
                    try{  
                        // 设置接收缓存,需要用0填充,否则为 null 无法接收。   
                        var buffer = new Array(1024).fill(0);    
                        var packet = new DatagramPacket(buffer, buffer.length);  

                        socket.receive(packet);    

                        var data = new JString(packet.getData()).trim();   
                        if (data.length == 0){  
                            // 接收超时,结束接收  
                            isReceive = false;  
                        }else{   
                            console.log('===========收到数据============',data);  
                        }   
                    }catch(ex){   
                        isReceive = false;  
                    }  
                }         
            } catch (ex) {   
                console.log('===========出错了============',ex);  
            } finally {  
                if (socket != undefined){    
                    socket.close();  
                }     
            }
1 关注 分享
5***@qq.com

要回复文章请先登录注册

2***@qq.com

2***@qq.com

你好,receive()这个方法会造成线程阻塞,有办法解决吗
2022-09-21 16:55
pipixx

pipixx

非常感谢,用这个代码实现了一个ssdp服务的客户端
2021-01-25 16:38
w***@wicos.cn

w***@wicos.cn

测试发送成功,只是接收端没数据,没响应
2021-01-05 23:16
[已删除]

[已删除]

承接H5、小程序、APP等外包:
1. 经验丰富,做过多种类型项目,有案例可看;
2. 整个项目外包可以找我(小团队接单,面向客户、产品);
3. 只需要前端部分也可以找我(个人接单,面向服务端合作伙伴);
4. wechat、tel(13070273424);
2020-12-26 11:55
w***@126.com

w***@126.com

senddata 不能是负数吗?怎么处理
2020-12-26 00:15